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

12

我有一个网页,它需要始终保持最新状态。我不想让浏览器缓存它。为此,在页面中嵌入了这个 meta 标签:

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

然而,一些浏览器似乎忽略它。Chrome尤其糟糕,虽然其他浏览器也倾向于做同样的事情。

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

我错过了什么简单的东西吗?我以为expires元标记就是这样做的方法。

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


底线:看起来HTML代码中的元标记几乎没有作用。但是,在HTTP中设置expires标记非常有效。

6个回答

9

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

如 Andrew Betts 所说,在这里,真正需要的只有这个。他是 W3C TAG 的成员。

使用它,您将不需要 pragma 或 expires。实际上,以上内容会覆盖 Expires 命令。


1
今天这个还能用吗? - Simon Ferndriger

4
这应该能帮到您:
<meta http-equiv="cache-control" content="no-cache" />

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


1
他们为什么要投我反对票?我的回答没有任何问题。 - Tarik
4
因为这不是最有效的方法。http://www.mnot.net/cache_docs/#META - Vineet Reynolds
1
最好将HTML代码以小写形式输入。 - user2947761
到了2021年,这会出现错误:https://dev59.com/e4zda4cB1Zd3GeqPq8rS?rq=1 - Luis A. Florit

3
您想发送一个过去日期的到期头(就像您的元标记)。
到期是最广泛受到尊重的缓存头,但您还可以使用Last-Modified或Etags等内容来获得更具体的控制。
元标记是设置缓存协议的一种有点过时的方法,大多数元缓存控制属性都已经过时(例如NO-CACHE)。许多用户代理会忽略它们。

2

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

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

它详细解释了什么有效,什么无效以及最佳实践。

总的来说,有很多种方式(如html标签、HTTP头)和类型的缓存(浏览器代理、网关)。


1
在响应头中向客户端发送Cache-Control: no-cache
请指定您正在使用的平台以获得更好的响应。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接