提问人:leeand00 提问时间:8/27/2009 最后编辑:Robleeand00 更新时间:3/22/2023 访问量:946948
是否有 <meta> 标签可以关闭所有浏览器中的缓存?[复制]
Is there a <meta> tag to turn off caching in all browsers? [duplicate]
问:
我读到,当您无法访问 Web 服务器的标头时,您可以使用以下命令关闭缓存:
<meta http-equiv="Cache-Control" content="no-store" />
但我也读到这在某些版本的 IE 中不起作用。是否有任何一组 <meta> 标签可以关闭所有浏览器中的缓存?
答:
Pragma 是您最好的选择:
<meta http-equiv="Pragma" content="no-cache">
评论
它在 IE5 中不起作用,但这不是一个大问题。
但是,缓存标头在元元素中是不可靠的;首先,站点和用户之间的任何网络代理都将完全忽略它们。对于Cache-Control和Pragma等标头,应始终使用真正的HTTP标头。
评论
对于现代 Web 浏览器(IE9 之后)
有关正确信息,请参阅页面顶部列出的副本!
请参阅此处的答案:如何在所有浏览器中控制网页缓存?
对于 IE9 及更早版本
不要盲目复制粘贴这个!
该列表只是不同技术的示例,不适用于直接 插入。如果复制,第二个将覆盖第一个和 第四个将覆盖第三个,因为 http-equiv 声明 AND 在 W3C 验证器中失败。最多,一个人可以 每个 http-equiv 声明中的一个;pragma、cache-control 和 到期。当使用现代最新的浏览器时,这些已经完全过时了。 反正在IE9之后。Chrome 和 Firefox 尤其不能像您预期的那样使用它们,如果有的话。
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
其实根本不用这些!
缓存标头在元元素中不可靠;首先, 网站和用户之间的任何网络代理都将完全忽略 他们。您应该始终对标头使用真正的 HTTP 标头,例如 Cache-Control 和 Pragma。
评论
我注意到在重复相同的服务调用(长轮询)时服务调用存在一些缓存问题。添加元数据无济于事。一种解决方案是传递 a 以确保认为这是一个不同的服务请求。这对我有用,所以添加一个服务器端脚本代码片段来自动更新这个标签不会有什么坏处:timestamp
ie
http
<meta http-equiv="expires" content="timestamp">
评论
尝试使用
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
评论
根据独立安全评估员对全行业对控制缓存的误解的出色案例研究,只有 Chrome、Firefox 和 IE 才能识别。IE 可以识别其他控件,但 Chrome 和 Firefox 无法识别。Cache-Control: no-store
评论
<meta http-equiv="Cache-Control" content="no-store"/>