有没有<meta>标签关闭缓存在所有浏览器?

我读到,当你不能访问web服务器的头文件时,你可以使用以下方法关闭缓存:

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

但我也读到,这在某些版本的IE中不起作用。有没有一套<meta>标签将关闭缓存在所有浏览器?

911990 次浏览

Pragma是你最好的选择:

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

它不能在IE5中工作,但这不是一个大问题。

然而,缓存头在元元素中是不可靠的;首先,网站和用户之间的任何web代理都将完全忽略它们。对于像Cache-Control和Pragma这样的头,你应该总是使用一个真正的HTTP头。

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

请查看页面顶部列出的副本以获取正确信息!

见答案在这里:如何控制网页缓存,跨所有浏览器?


适用于IE9及之前版本

不要盲目复制粘贴这个!

这个列表只是不同技巧的例子,不是直接的 插入。如果复制,第二个将覆盖第一个和 由于http-equiv,第四个将覆盖第三个 声明和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" />

其实根本不用这些!

缓存头在元元素中不可靠;首先, 网站和用户之间的任何web代理都将被完全忽略 他们。您应该始终使用真正的HTTP报头,例如 Cache-Control and Pragma.

我注意到在重复相同的服务调用(长轮询)时,服务调用存在一些缓存问题。添加元数据没有帮助。一个解决方案是传递一个timestamp,以确保ie认为它是一个不同的http服务请求。这对我来说很有效,所以添加一个服务器端脚本代码片段来自动更新这个标记不会有什么坏处:

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

试着用

    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">

根据独立安全评估者的伟大的关于整个行业对控制缓存的误解的案例研究,只有Cache-Control: no-store被Chrome, Firefox和IE识别。IE可以识别其他控件,但Chrome和Firefox不能。