diff --git a/app.py b/app.py
index 4c479fb24a21e5af536cabce44d65af9173f23d8..46b9b7777e0e77947da94e7f0777a8f650f976b3 100644
--- a/app.py
+++ b/app.py
@@ -1,6 +1,7 @@
 import os
 from flask import Flask, jsonify, make_response, render_template, request, abort
 from flask.ext.bower import Bower
+from flask.ext.cachecontrol import FlaskCacheControl, cache_for
 from jinja2.exceptions import TemplateNotFound
 from sqlalchemy.orm import joinedload
 from models import db, Agency
@@ -20,6 +21,9 @@ db.init_app(app)
 
 Bower(app)
 
+cache_control = FlaskCacheControl()
+cache_control.init_app(app)
+
 # Flask Web Routes
 @app.route('/')
 def map():
@@ -43,6 +47,7 @@ def map_embed(mode):
         return render_template('predictions.html', agency=agency, config=app.config, embed=True)
 
 @app.route('/ajax')
+@cache_for(seconds=5)
 def ajax():
     """ Handle all async requests (from JS). """
     query = request.args.get('query')
diff --git a/requirements.txt b/requirements.txt
index a7a4fa6a45c015654caecb4a87451d3d4e36560e..6cb4b21440d6c902654af1ebd3de60f0ae05e68b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,5 +1,6 @@
 Flask==0.10.1
 Flask-Bower==1.2.1
+Flask-CacheControl==0.1.2
 Flask-Celery-Helper==1.1.0
 Flask-Migrate==1.6.0
 Flask-SQLAlchemy==2.1