可配置的中间件,为url添加http缓存头。
django-cache-headers的Python项目详细描述
django缓存头
概述
django缓存头允许您为url模式设置http缓存头 根据某些政策。它本身不执行任何缓存-它 只需设置响应上的头,然后由eg.varnish解释。
做一个真正的零配置清漆结果是脆弱的,所以django缓存 headers现在生成一个vcl文件,可以包含在您的 默认清漆配置文件。
安装
- 在python路径中安装或添加django-cache-headers。
- 将cache_headers添加到INSTALLED_APPS设置中。
- 在前面添加cache_headers.middleware.CacheHeadersMiddleware。 SessionMiddleware和AuthenticationMiddleware以及消息中间件 MIDDLEWARE_CLASSES设置。
政策
django缓存头提供四种缓存策略。您可以定义自己的策略。
- 所有用户-所有用户的响应都标记为缓存一次。
- 仅匿名-响应仅对匿名用户标记为缓存一次。
- 匿名和经过身份验证的-响应对于匿名用户标记为缓存一次,对于经过身份验证的用户标记为缓存一次。
- 每用户-对匿名用户和每个已验证的用户分别将响应标记为缓存一次。
设置
timeouts键将策略、超时(秒)和url regex组合在一个嵌套字典中:
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以启用防止缓存的检查 通过篡改曲奇来下药。 在大多数单元测试中保持禁用状态。单元测试的client.login()没有 触发正常的预期登录路径。
CACHE_HEADERS = {“enable-tampering-checks”: True}
清漆配置
生成VCL片段:
python manage.py generate_vcl > /path/to/generated.vcl
将sample.vcl的内容保存为/etc/varnish/default.vcl。 重新启动Varnish以使配置生效。
更改日志
0.4
- Django 2.0和Python3的兼容性。Django 1.9的支持率已经下降。
0.3.3
- 修复仅匿名策略以考虑未验证的cookie。
0.3.2
- 如果会话设置为在会话结束时过期,请确保isauthenticated cookie在会话结束时过期。
0.3.1
- 匿名用户实际上可能有一个会话。妥善处理这个案子。
0.3
- 增加VCL生成管理命令,与清漆一起使用。sample.vcl已更新以反映使用情况。
- 使用on_user_auth_事件确保在登录和注销期间未设置缓存头。
- 防止会话cookie被篡改的额外保护。
- 策略不再假设会话cookie名称。
0.2.2
- 按最特定(最长)到最不特定(最短)的顺序在正则表达式上迭代。
- 由于上述变更不再需要,因此恢复订单信息技术变更。
0.2.1
- 将ordereddict用于保证策略迭代顺序。
0.2
- 由于太多的安全问题,在设置标题时完全忽略cookies被证明是一个错误。恢复它们。
0.1.3
- 处理用户也可能登录但未设置cookie的情况。
0.1.2
- 使用s-maxage头文件与清漆兼容。
0.1.1
- 如果状态代码不是200,则保持响应不变。
0.1
- 初次发布。