可配置的中间件,为url添加http缓存头。

django-cache-headers的Python项目详细描述


django缓存头

Travis

概述

django缓存头允许您为url模式设置http缓存头 根据某些政策。它本身不执行任何缓存-它 只需设置响应上的头,然后由eg.varnish解释。

做一个真正的零配置清漆结果是脆弱的,所以django缓存 headers现在生成一个vcl文件,可以包含在您的 默认清漆配置文件。

安装

  1. 在python路径中安装或添加django-cache-headers
  2. cache_headers添加到INSTALLED_APPS设置中。
  3. 在前面添加cache_headers.middleware.CacheHeadersMiddleware。 SessionMiddleware和AuthenticationMiddleware以及消息中间件 MIDDLEWARE_CLASSES设置。

政策

django缓存头提供四种缓存策略。您可以定义自己的策略。

  1. 所有用户-所有用户的响应都标记为缓存一次。
  2. 仅匿名-响应仅对匿名用户标记为缓存一次。
  3. 匿名和经过身份验证的-响应对于匿名用户标记为缓存一次,对于经过身份验证的用户标记为缓存一次。
  4. 每用户-对匿名用户和每个已验证的用户分别将响应标记为缓存一次。

设置

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以使配置生效。

作者

praekelt咨询
  • 赫德利·鲁斯
  • 奥特斯·巴里

更改日志

0.4

  1. Django 2.0和Python3的兼容性。Django 1.9的支持率已经下降。

0.3.3

  1. 修复仅匿名策略以考虑未验证的cookie。

0.3.2

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

0.3.1

  1. 匿名用户实际上可能有一个会话。妥善处理这个案子。

0.3

  1. 增加VCL生成管理命令,与清漆一起使用。sample.vcl已更新以反映使用情况。
  2. 使用on_user_auth_事件确保在登录和注销期间未设置缓存头。
  3. 防止会话cookie被篡改的额外保护。
  4. 策略不再假设会话cookie名称。

0.2.2

  1. 按最特定(最长)到最不特定(最短)的顺序在正则表达式上迭代。
  2. 由于上述变更不再需要,因此恢复订单信息技术变更。

0.2.1

  1. 将ordereddict用于保证策略迭代顺序。

0.2

  1. 由于太多的安全问题,在设置标题时完全忽略cookies被证明是一个错误。恢复它们。

0.1.3

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

0.1.2

  1. 使用s-maxage头文件与清漆兼容。

0.1.1

  1. 如果状态代码不是200,则保持响应不变。

0.1

  1. 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java SimpleFramework和工厂方法   Java适当地处理异常   java单例类不起作用   java小程序和Swing在eclipse中不显示组件   多个键上的java Redisson FastRemove不起作用   java验证请求正文不等于模式   在Java中从URL读取数据   eche RecyclerView项的java Set自定义字体   string Java如何从Date获取HH:mm:ss   当Java应用程序落后于负载均衡器时,在某些URL上强制使用SSL   使用esapi时发生java错误   java使用流根据第二个列表中的值更新一个列表中的对象   组织。openqa。硒。Java中的NoTouchElementException WebDriver?   从JSON字符串Java创建CSV文件