Cache slow views and functions with Flask-Caching using Redis, file, or in-memory backends.
Caching with Flask-Caching
pip install flask-caching
from flask_caching import Cache
cache = Cache(config={"CACHE_TYPE": "redis", "CACHE_REDIS_URL": "redis://localhost:6379/0"})
cache.init_app(app)
# Cache a view
@app.route("/stats")
@cache.cached(timeout=300) # 5 minutes
def stats():
return jsonify(get_expensive_stats())
# Cache with query params
@app.route("/users")
@cache.cached(timeout=60, query_string=True)
def users():
return jsonify(User.query.all())
# Cache a function
@cache.memoize(timeout=600)
def get_user_posts(user_id):
return Post.query.filter_by(user_id=user_id).all()
# Clear cache
cache.delete("view//stats")
cache.delete_memoized(get_user_posts, user_id=42)
cache.clear()