1

我的问题是指django 文档的这一部分

其中,有一段文字如下:

请注意,缓存中间件已经使用 CACHE_MIDDLEWARE_SECONDS 设置的值设置了缓存标头的 max-age。如果您在 cache_control 装饰器中使用自定义 max_age,则装饰器将优先,并且标头值将正确合并。

我的解释是,默认情况下,来自 django 服务器端的响应在其 http 标头部分中会包含“Cache-Control:max-age=600”,除非使用一些与 http-cache 相关的装饰器来修改“Cache-Control” “标题。

我做了一个快速实验来验证我上面的解释。令人惊讶的是,当视图上没有使用与 http-cache 相关的内容时,生成的响应根本没有“Cache-Control”标头

为什么我看到的结果与官方文档描述的不同?我误解了概述的段落吗?

此外,当响应中没有“Cache-Control”标头时,我可以安全地假设不涉及 http 缓存(即不会使用缓存响应)吗?

4

1 回答 1

3

这不会“默认”发生。Django 附加标头必须满足两个条件Cache-Control

  1. 您必须使用CACHES(Django 1.3+) 或BACKEND(Django <1.3) 设置缓存后端。

  2. 您必须将缓存中间件添加到MIDDLEWARE_CLASSES.

有关详细信息,请参阅文档

至于在没有Cache-Control标头的情况下进行缓存,这通常成为 Web 浏览器或客户端的决定。Cache-Control给出了必须遵循的指令,但浏览器通常已经自行缓存,因此它的真正目的通常是在某些情况下防止缓存,而不是启用它。

于 2012-05-08T19:28:39.723 回答