Set Cache-Control headers on the Flask response
Project description
Flask-CacheControl
Description
A light-weight library to conveniently set Cache-Control
headers on the response. Decorate view functions with
cache_for, cache, or dont_cache decorators. Makes use of
Flask response.cache_control.
This extension does not provide any caching of its own. Its sole
purpose is to set Cache-Control and related HTTP headers on the
response, so that clients, intermediary proxies or reverse proxies
in your jurisdiction which evaluate Cache-Control headers, such as
Varnish Cache, do the caching for you.
By default, Cache-Control headers are only appended in case of a
successful response (status code 2xx). This behaviour can be controlled
with the only_if argument to cache_for and cache decorators. Included
options are Always, ResponseIsSuccessful, ResponseIsSuccessfulOrRedirect. Custom behaviour can be implemented by subclassing OnlyIfEvaluatorBase.
If the vary keyword argument is given to cache_for or cache
decorators, the Vary HTTP header is returned with the response.
Vary headers are appended independent of response status code.
Example
from flask import Flask, render_template
from flask_cachecontrol import (
cache,
cache_for,
dont_cache,
Always,
ResponseIsSuccessfulOrRedirect)
app = Flask(__name__)
@app.route('/')
@cache_for(hours=3)
def index_view():
return render_template('index_template')
@app.route('/users')
@cache_for(minutes=5, only_if=ResponseIsSuccessfulOrRedirect)
def users_view():
return render_template('user_template')
@app.route('/stats')
@cache(max_age=3600, public=True, only_if=Always, vary=['User-Agent', 'Referer'])
def stats_view():
return render_template('stats_template')
@app.route('/dashboard')
@dont_cache()
def dashboard_view():
return render_template('dashboard_template')
Changelog
0.3.0
- Add
only_ifevaluator for successful or redirect (2xx, 3xx) responses (#7) - Support Vary-headers (#6)
- Improve instantiation of callbacks and registry provider
- BREAKING: Simplify instantiation and hooking into flask response handling (#8)
- No more need to instantiate
FlaskCacheControlfor Flask app.
- No more need to instantiate
- BREAKING: Drop support for
only_if=None- Use more explicit
only_if=Alwaysinstead
- Use more explicit
- BREAKING: Restructure modules
- Direct imports from modules inside the package need to be adapted.
- Improve test structuring
- Fix flask instantiation and import in example
v0.2.1
- Fix import statement in example
v0.2.0
- Add tests
- BREAKING: By default, cache control headers are only applied to successful requests. (status code
2xx) This behaviour can be customized by providingonly_if=as a kw to all caching decorators. - BREAKING: Requires python 3.3 or higher
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file Flask-CacheControl-0.3.0.tar.gz.
File metadata
- Download URL: Flask-CacheControl-0.3.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39d10ce9dac835f926035b71eec5c8711b2625ecb27dd9b43f09a16ee5235e4e
|
|
| MD5 |
29d122a6ad8ea12bc3e6c955604826ea
|
|
| BLAKE2b-256 |
82e6263fadac78f426428bc9705694069955a3c27b8f1d5b318ed23641d68d0f
|
File details
Details for the file Flask_CacheControl-0.3.0-py3-none-any.whl.
File metadata
- Download URL: Flask_CacheControl-0.3.0-py3-none-any.whl
- Upload date:
- Size: 9.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d75f56d8f9288d13758da69e7af4c4d9adcd87e7e5db5f57124c6f326e7c89c
|
|
| MD5 |
f8995e25943d61e18384c0bc2ed4254f
|
|
| BLAKE2b-256 |
c17217ea30f6c30d8181601765942cc0869151d2731c0b07a02aca01bccb520a
|