首页 文章

使用<meta>标签关闭所有浏览器的缓存? [重复]

提问于
浏览
401

这个问题在这里已有答案:

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

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

但我也读到这在某些版本的IE中不起作用 . 是否有任何<meta>标签可以关闭所有浏览器中的缓存?

6 回答

  • 678

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

    有关正确信息,请参阅页面顶部列出的重复项!

    请在此处查看答案:How to control web page caching, across all browsers?


    对于IE9及之前

    不要盲目复制贴这个!

    该列表只是不同技术的示例,不适合直接插入 . 如果复制,第二个将覆盖第一个,第四个将覆盖第三个,因为http-equiv声明和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" />
    

    实际上根本不使用这些!

    缓存标头在元素中不可靠;例如,站点和用户之间的任何Web代理都将完全忽略它们 . 您应该始终为标头(例如Cache-Control和Pragma)使用真正的HTTP标头 .

  • 4

    这是对行业范围内控制缓存误解的案例研究的链接 .

    http://securityevaluators.com/knowledge/case_studies/caching/

    总之,根据本文,只有 Cache-Control: no-store 被Chrome,Firefox和IE识别 . IE识别其他控件,但Chrome和Firefox不识别 .

  • 4

    它在IE5中不起作用,但这不是一个大问题 .

    但是,缓存标头在元素中是不可靠的;例如,站点和用户之间的任何Web代理都将完全忽略它们 . 您应该始终为标头(例如Cache-Control和Pragma)使用真正的HTTP标头 .

  • -3

    pragma是你最好的选择:

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

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

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

  • 25

    尝试使用

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

相关问题