跳转到主要内容

可配置的中介件,用于为URL添加HTTP缓存头。

项目描述

Django Cache Headers

Travis

概述

Django Cache Headers 允许您根据某些策略为URL模式设置HTTP缓存头。它本身不执行任何缓存 - 它仅设置响应头,然后由例如Varnish解释。

实现真正零配置的Varnish证明是脆弱的,因此Django Cache Headers现在生成一个VCL文件,可以将其包含到或修改为您的默认Varnish配置文件。

安装

  1. 安装或添加 django-cache-headers 到您的Python路径。

  2. cache_headers 添加到您的 INSTALLED_APPS 设置。

  3. 在您的 MIDDLEWARE_CLASSES 设置中添加 cache_headers.middleware.CacheHeadersMiddleware 在 SessionMiddleware、AuthenticationMiddleware 和 MessageMiddleware 之前。

策略

Django Cache Headers 提供了四种缓存策略。您可以定义自己的策略。

  1. all-users - 响应一次标记为所有用户已缓存。

  2. anonymous-only - 响应一次仅标记为匿名用户已缓存。

  3. 匿名用户和认证用户的响应会被标记为缓存一次。

  4. 针对每个用户的缓存标记只对匿名用户和每个认证用户分别进行。

设置

超时键将策略、秒数超时和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以使配置生效。

作者

Praekelt Consulting

  • Hedley Roos

  • Altus Barry

变更日志

0.4

  1. Django 2.0和Python 3兼容性。已弃用Django 1.9支持。

0.3.3

  1. 修复仅匿名策略,以考虑isauthenticated cookie。

0.3.2

  1. 确保isauthenticated cookie在会话结束时过期,如果会话设置为这样做的话。

0.3.1

  1. 匿名用户实际上可能有会话。优雅地处理这种情况。

0.3

  1. 添加了vcl生成管理命令,与varnish一起使用。sample.vcl已更新以反映使用情况。

  2. 在登录和登出期间使用on_user_auth_event确保设置no-cache头部。

  3. 针对篡改的会话cookie提供额外的保护。

  4. 策略不再对会话cookie名称做出假设。

0.2.2

  1. 按照最具体(最长)到最不具体(最短)的顺序迭代正则表达式。

  2. 撤销OrderedDict更改,因为不再需要它,如上所述。

0.2.1

  1. 使用OrderedDict以保证策略迭代顺序。

0.2

  1. 在设置头部时完全忽略cookies被证明是一个错误,因为存在太多的安全问题。恢复它们。

0.1.3

  1. 处理用户也可能登录但没有设置cookie的情况。

0.1.2

  1. 使用s-maxage头部以与Varnish兼容。

0.1.1

  1. 如果状态码不是200,则不修改响应。

0.1

  1. 初始版本。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

django-cache-headers-0.4.tar.gz (15.0 kB 查看哈希值)

上传时间

构建分发

django_cache_headers-0.4-py2.7.egg (33.4 kB 查看哈希值)

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面