告诉浏览器不要缓存的正确方法是什么?

时间:2009-09-03 00:39:05

标签: caching browser meta-tags

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

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

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

当我从书签栏中选择页面时,大部分时间它甚至都没有点击服务器,只是从缓存中加载它。如果我然后按F5,它会转到服务器并获取新副本。

我错过了一些简单的东西吗?我认为过期元标记就是这样做的。

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


底线:看起来像HTML代码中的元标记几乎什么都不做。但是,在HTTP中设置expires标签很有效。

6 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:4)

这可以帮到你:

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

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

答案 2 :(得分:3)

您希望将Expires标头设置为过去的日期(例如Meta标签)。

Expires是最受尊重的缓存标头,但您也可以使用Last-Modified或Etags之类的东西来获得更具体的控制。

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

答案 3 :(得分:2)

有一篇很棒的文章我曾经读过一般的浏览器缓存和缓存:

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

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

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

答案 4 :(得分:2)

在响应标头内向客户端发送Cache-Control: no-cache 请指定您使用哪个平台来做出更好的回复。

答案 5 :(得分:1)

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

确实是您所需要的,正如W3C TAG成员安德鲁·贝茨(Andrew Betts)在这里https://youtu.be/TNlcoYLIGFk?t=654所述。

使用此选项,您将不需要编译或过期。实际上,以上内容将覆盖Expires命令。