我的问题是指django docs的this section。
在那里,有一段写着:
请注意,缓存中间件已使用CACHE_MIDDLEWARE_SECONDS设置的值设置缓存标头的max-age。如果在cache_control装饰器中使用自定义max_age,则装饰器将优先,并且标头值将正确合并。
我的解释是,默认情况下,来自django server-end的响应将具有" Cache-Control:max-age = 600"在他们的http标题部分,除非使用一些与http-cache相关的装饰器来修改" Cache-Control"报头中。
我进行了一项快速实验,以验证我的解释。令人惊讶的是,当在视图上没有使用与http-cache相关时,生成的响应具有 NO" Cache-Control"总而言之。
为什么我看到的官方文档描述的结果不同?我是否误解了概述的段落?
此外,当没有" Cache-Control"响应中的标题,我可以安全地假设没有涉及http缓存(即不会使用缓存响应)吗?
答案 0 :(得分:3)
“默认情况下”不会发生这种情况。 Django必须满足两个条件才能附加Cache-Control
标题:
您必须设置缓存后端,CACHES
(Django 1.3+)或BACKEND
(Django< 1.3)。
您必须将缓存中间件添加到MIDDLEWARE_CLASSES
。
有关详细信息,请参阅docs。
对于没有Cache-Control
标题的缓存,这通常会成为Web浏览器或客户端的决定。 Cache-Control
给出必须遵循的指令,但浏览器通常已经自行缓存,因此它的真正目的通常是在某些情况下阻止缓存,而不是启用它。