是否有一个 <meta> 标签可以关闭所有浏览器中的缓存? [重复]

问题描述 投票:0回答:6

我读到,当您无法访问网络服务器的标头时,您可以使用以下方法关闭缓存:

<meta http-equiv="Cache-Control" content="no-store" />

但我还了解到这在某些版本的 IE 中不起作用。是否有一组 标签可以关闭所有浏览器中的缓存?

html internet-explorer firefox caching asp.net-web-api
6个回答
754
投票

适用于现代网络浏览器(IE9之后)

请参阅页面顶部列出的重复项以获取正确信息!

请参阅此处的答案:如何跨所有浏览器控制网页缓存?


适用于 IE9 及之前版本

请勿盲目复制粘贴!

该列表只是不同技术的示例,不适合直接使用 插入。如果复制,第二个将覆盖第一个 由于 http-equiv,第四个会覆盖第三个 声明 AND 通过 W3C 验证器失败。最多一个人可以拥有 每个 http-equiv 声明之一;编译指示、缓存控制和 过期。当使用现代的最新浏览器时,这些已经完全过时了。 反正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 标头,例如 缓存控制和编译指示。


84
投票

根据独立安全评估者关于全行业对缓存控制的误解的伟大案例研究,只有 Cache-Control: no-store

 被 Chrome、Firefox 和 IE 认可。 IE 可以识别其他控件,但 Chrome 和 Firefox 不能。


25
投票
它在 IE5 中不起作用,但这不是一个大问题。

但是,缓存 headers 在元元素中并不可靠;其一,网站和用户之间的任何网络代理都将完全忽略它们。您应该始终对 Cache-Control 和 Pragma 等标头使用真实的 HTTP 标头。


11
投票
pragma 是你最好的选择:

<meta http-equiv="Pragma" content="no-cache">
    

8
投票
当重复相同的服务调用(长轮询)时,我注意到服务调用存在一些缓存问题。添加元数据没有帮助。一种解决方案是传递

timestamp

 以确保 
ie
 认为这是不同的 
http
 服务请求。这对我有用,因此添加服务器端脚本代码片段来自动更新此标签不会有什么坏处:

<meta http-equiv="expires" content="timestamp">


    


-6
投票
尝试使用

<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1">
    
© www.soinside.com 2019 - 2024. All rights reserved.