Html 是否有<;meta>;标记以关闭所有浏览器中的缓存?

Html 是否有<;meta>;标记以关闭所有浏览器中的缓存?,html,internet-explorer,firefox,caching,asp.net-web-api,Html,Internet Explorer,Firefox,Caching,Asp.net Web Api,我了解到,当您无法访问web服务器的标头时,可以使用以下方法关闭缓存: <meta http-equiv="Cache-Control" content="no-store" /> 但我也了解到,这在IE的某些版本中不起作用。是否有任何一组标记可以关闭所有浏览器中的缓存?pragma是您最好的选择: <meta http-equiv="Pragma" content="no-cache"> 它在IE5中不起作用,但这不是什么大问题 然而,缓存头在元元素中是不可靠的

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

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


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

pragma是您最好的选择:

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

它在IE5中不起作用,但这不是什么大问题

然而,缓存头在元元素中是不可靠的;首先,站点和用户之间的任何web代理都将完全忽略它们。对于诸如缓存控制和Pragma之类的头,您应该始终使用真正的HTTP头。

对于现代web浏览器(在IE9之后) 有关正确信息,请参阅页面顶部列出的副本! 请参见此处的答案:


适用于IE9及之前 不要盲目复制粘贴这个!
这个列表只是不同技术的例子,不是直接的 插入。如果复制,第二个将覆盖第一个和第二个 第四个将覆盖第三个,因为http等价 声明并使用W3C验证程序失败。充其量也可以 每个http等价声明中的一个;pragma、缓存控制和 到期。当使用现代最新的浏览器时,这些浏览器已经完全过时了。 反正在IE9之后。Chrome和Firefox并没有像你所期望的那样,特别是在这些方面


其实根本不用这些! 缓存头在元元素中不可靠;首先, 网站和用户之间的任何web代理都将完全忽略 他们。您应该始终使用真正的HTTP头作为头,例如 缓存控制和Pragma


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

尝试使用

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



根据独立安全评估师的出色、唯一的
缓存控制:Chrome、Firefox和IE无法识别任何存储。
IE可以识别其他控件,但Chrome和Firefox无法识别。

将bobince和dpb的答案结合起来是最佳选择。覆盖所有基础。在这个站点上写缓存是为了停用HTTP中的缓存,这样站点就不会存储在中间服务器上。我想这可能会对某些人有所帮助。对于那些像我一样努力使用后退按钮和“重新打开关闭的选项卡”缓存的人,请看另一个问题。这是一个骇人的解决方案,但是没有一个基于头的解决方案适合我,就我的目的而言,这个小小的JS片段非常棒(很容易转换成普通的JS)。我想添加我自己的,但这是关闭的。根据MDN:事实上,您很可能想使用问题中的
。@bobince,谢谢!如果我对web代理有任何问题,我会记住这一点,但我的“团队”让我完全处于前端,不允许我访问标题。即使在2009年写这篇文章时,提出IE5兼容性也无关紧要。在IE2中也不起作用,哈哈。更多的解释会很好。为什么重复缓存控制会过期?你为什么需要这些?1980年有什么特别之处?pragma:no cache和cache control:no cache之间有什么区别?更多的解释会很好。对此不是100%确定,但我认为重复是为了处理不同的浏览器。我发现了一个最接近的解释:有时我们需要打破一些验证规则,以便在所有浏览器上工作。该列表只是不同技术的示例,不用于直接插入。如果复制,第二个将覆盖第一个,第四个将覆盖第三个,因为http equiv声明,并且W3C验证程序失败。最多可以有一个http等价声明;pragma、cache control和expires……这是一个很老的问题,因此您的建议可能是,这是因为在较新的实现中,这通常会被解释为缓存头cache control:no cache。所以实际上你最好用更现代的为什么要试试?你能解释一下吗?一些解释会很好…它在Chrome上不起作用。我发现Chrome对缓存控制的响应更好:没有缓存(之后100%的条件请求)。“无存储”有时从缓存加载,甚至不尝试条件请求。Firefox对“无存储”的响应更好,但如果您在之后立即重新加载,有时仍然会从缓存加载。真是一团糟!这真是聪明的ot也在chrome上工作
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1">