HTML页面 <meta> 中设置了不缓存,后端返回头中设置了缓存时间页面会缓存吗?

作者站长头像
站长
· 阅读数 10

对于 HTML 页面而言,如果页面的 <meta> 设置了不缓存(no-cache, no-store, Expires = 0)。但是 Nginx 配置了 HTML 页面的缓存时间,那么实际用户在浏览的时候是以什么为准呢?

回复
1个回答
avatar
test
2024-07-11

理论上应该是 Response Headers 的优先级更高,因为一般会通过网关来控制缓存,HTML 经后端生成后,会经过网关返回回去,网关就可以在这个阶段设置缓存。

看 MDN 的 meta 描述关于 http-equiv 的介绍

属性定义了一个编译指示指令。这个属性叫做 http-equiv(alent) 是因为所有允许的值都是特定 HTTP 头部的名称

既然如此的话,浏览器就没必要再去阅读 HTML 文档来确定缓存了。

可以看一下这个文章:Caching Tutorial for Web Authors and Webmasters

Meta tags are easy to use, but aren’t very effective. That’s because they’re only honored by a few browser caches, not proxy caches (which almost never read the HTML in the document).

译: meta 标签很容易使用,但并不十分有效。这是因为它们只被少数浏览器的缓存所尊重,而不是代理缓存(几乎从不读取文档中的HTML)。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容