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

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

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


Pragma是你最好的选择:

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

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

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


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

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

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


适用于IE9及之前版本

不要盲目复制粘贴这个!

The list is just examples of different techniques, it's not for direct insertion. If copied, the second would overwrite the first and the fourth would overwrite the third because of the http-equiv declarations AND fail with the W3C validator. At most, one could have one of each http-equiv declarations; pragma, cache-control and expires. These are completely outdated when using modern up to date browsers. After IE9 anyway. Chrome and Firefox specifically does not work with these as you would expect, if at all.

<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报头,例如 缓存控制和Pragma。


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

<元http-equiv=“expires”


试着用

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

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