【问题标题】:What is the proper way to tell the browser not to cache?告诉浏览器不要缓存的正确方法是什么?
【发布时间】:2010-11-25 03:32:57
【问题描述】:

我有一个始终需要保持最新状态的网页。我不希望浏览器缓存它。为此,此元标记嵌入到页面中:

<meta name="Expires" content="Tue, 01 Jun 1999 19:58:02 GMT"> 

但是,一些浏览器似乎忽略了它。 Chrome 在这方面特别糟糕,尽管其他浏览器倾向于做同样的事情。

当我从书签栏中选择页面时,大多数时候,它甚至不会访问服务器,只是从缓存中加载它。如果我然后按 F5,它会转到服务器并获取一个新副本。

我错过了一些简单的东西吗?我认为 expires 元标记是它的完成方式。

这发生在 Windows 2000 上的 IIS 5.0 上。


底线:看起来 HTML 代码中的元标记几乎什么都不做。但是,在 HTTP 中设置过期标签可以很好地解决问题。

【问题讨论】:

    标签: caching browser meta-tags


    【解决方案1】:

    使用您的服务器发送过期标头。具体来说,如果您使用的是 apache,请查看以下内容:

    http://httpd.apache.org/docs/2.0/mod/mod_expires.html

    【讨论】:

      【解决方案2】:

      这应该对你有帮助:

      <meta http-equiv="cache-control" content="no-cache" />
      

      也可以通过IIS配置静态内容缓存机制;您可以在此处了解如何操作:http://support.microsoft.com/kb/247404

      【讨论】:

      【解决方案3】:

      您想发送一个设置为过去日期的 Expires 标头(例如您的 Meta 标签)。

      Expires 是最受推崇的缓存标头,但您也可以使用 Last-Modified 或 Etags 等内容来获得更具体的控制。

      元标记是设置缓存协议的一种有些过时的方法,并且大多数元缓存控制属性都已被弃用(例如 NO-CACHE)。很多用户代理都忽略了它们。

      【讨论】:

        【解决方案4】:
        <meta http-equiv="Cache-Control" content="private, no-store" />
        

        Is really ALL you need, as stated here https://youtu.be/TNlcoYLIGFk?t=654 by Andrew Betts, elected W3C TAG member.

        使用它,您将不需要 pragma 或 expires。事实上,上面会覆盖 Expires 命令。

        【讨论】:

          【解决方案5】:

          我曾经读过一篇关于浏览器缓存和一般缓存的精彩文章:

          http://www.mnot.net/cache_docs/

          它详细解释了哪些有效,哪些无效,什么是最好的。

          总之有很多方式(html标签、HTTP头)和缓存类型(浏览器代理、网关)

          【讨论】:

            【解决方案6】:

            在响应标头中向客户端发送Cache-Control: no-cache
            请说明您使用什么平台做出更好的响应。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-03-08
              • 2012-01-11
              • 2017-03-14
              • 1970-01-01
              • 2011-02-11
              • 1970-01-01
              • 2010-10-13
              • 1970-01-01
              相关资源
              最近更新 更多