可配置的中介件,用于为URL添加HTTP缓存头。
项目描述
Django Cache Headers
概述
Django Cache Headers 允许您根据某些策略为URL模式设置HTTP缓存头。它本身不执行任何缓存 - 它仅设置响应头,然后由例如Varnish解释。
实现真正零配置的Varnish证明是脆弱的,因此Django Cache Headers现在生成一个VCL文件,可以将其包含到或修改为您的默认Varnish配置文件。
安装
安装或添加 django-cache-headers 到您的Python路径。
将 cache_headers 添加到您的 INSTALLED_APPS 设置。
在您的 MIDDLEWARE_CLASSES 设置中添加 cache_headers.middleware.CacheHeadersMiddleware 在 SessionMiddleware、AuthenticationMiddleware 和 MessageMiddleware 之前。
策略
Django Cache Headers 提供了四种缓存策略。您可以定义自己的策略。
all-users - 响应一次标记为所有用户已缓存。
anonymous-only - 响应一次仅标记为匿名用户已缓存。
匿名用户和认证用户的响应会被标记为缓存一次。
针对每个用户的缓存标记只对匿名用户和每个认证用户分别进行。
设置
超时键将策略、秒数超时和URL正则表达式组合在一个嵌套字典中。
CACHE_HEADERS = { "timeouts": { "all-users": { 60: ( "^/all-users/", ) }, "anonymous-only": { 60: ( "^/anonymous-only/", ) }, "anonymous-and-authenticated": { 60: ( "^/anonymous-and-authenticated/", ) }, "per-user": { 60: ( "^/per-user/", ) }, "custom-policy": { 60: ( "^/custom-policy/", ) } } }
将 browser-cache-seconds 设置为指定浏览器缓存响应的时间长度,直到它必须与服务器重新验证。默认为5秒。
CACHE_HEADERS = {"browser-cache-seconds": 10}
将 enable-tampering-checks 设置为启用检查,以防止通过篡改cookies进行缓存中毒。对于大多数单元测试,请保持禁用状态。单元测试的client.login()不会触发正常的预期登录路径。
CACHE_HEADERS = {“enable-tampering-checks”: True}
Varnish配置
生成VCL片段
python manage.py generate_vcl > /path/to/generated.vcl
将sample.vcl的内容保存为/etc/varnish/default.vcl。重启Varnish以使配置生效。
变更日志
0.4
Django 2.0和Python 3兼容性。已弃用Django 1.9支持。
0.3.3
修复仅匿名策略,以考虑isauthenticated cookie。
0.3.2
确保isauthenticated cookie在会话结束时过期,如果会话设置为这样做的话。
0.3.1
匿名用户实际上可能有会话。优雅地处理这种情况。
0.3
添加了vcl生成管理命令,与varnish一起使用。sample.vcl已更新以反映使用情况。
在登录和登出期间使用on_user_auth_event确保设置no-cache头部。
针对篡改的会话cookie提供额外的保护。
策略不再对会话cookie名称做出假设。
0.2.2
按照最具体(最长)到最不具体(最短)的顺序迭代正则表达式。
撤销OrderedDict更改,因为不再需要它,如上所述。
0.2.1
使用OrderedDict以保证策略迭代顺序。
0.2
在设置头部时完全忽略cookies被证明是一个错误,因为存在太多的安全问题。恢复它们。
0.1.3
处理用户也可能登录但没有设置cookie的情况。
0.1.2
使用s-maxage头部以与Varnish兼容。
0.1.1
如果状态码不是200,则不修改响应。
0.1
初始版本。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。