可配置的中介件,用于为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
- 初始版本。 
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。