防止HTML页面缓存

36

我有一个 HTML 页面。问题在于,我不想让用户每次放置新内容时都要刷新页面。

为确保页面不被缓存,我使用了以下代码:

     <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
     <meta http-equiv="Pragma" content="no-cache"/>
     <meta http-equiv="Expires" content="0"/>

问题是,我仍然需要在页面上进行刷新才能获取最新的内容显示出来。我做错了什么吗?我应该使用其他标签吗?


这真的会起作用吗?我会建议使用PHP。 - Ryan de Vries
1
@RyandeVries - 由于问题说它不起作用,因此... - Quentin
我的意思是,在我看来,这永远不会起作用,但我不确定! - Ryan de Vries
2
您的意思是在用户查看页面时,希望内容自动更新,就像实时流一样吗?还是下次用户访问您的页面时,似乎显示了缓存的内容? - jbehren
我注意到历史记录没有影响,并且页面重新加载不是自动的。有没有办法让它自动重新加载? - MeSo2
2个回答

33

您展示的代码片段让浏览器在每次访问网站时都加载它,这在您频繁更新但仍然有静态页面时非常有用。

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>

如果您希望让它执行实时更新,就像在(g)mail账户中一样,您需要使它自行刷新(页面的某些部分)。在这种情况下,请使用Javascript,就像这个问题中所示的那样,或者使用ajax调用。

$('#something').click(function() {
    location.reload();
});

1
Garrin,我有一个HTML页面,是的,我经常更新。因此,<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>不应该起作用吗?看起来我仍然需要刷新。 - Nate Pet
我仍然不确定您需要/想要做什么。如果您确实需要在用户观看页面时进行实时更新,则必须选择JavaScript / Ajax解决方案。但是,如果您希望用户每次访问网站时都能获得最新版本的网站,例如您每天更新网站,则您的解决方案已足够好。 - Garrin
2
原因是我们正在更新静态页面的HTML页面。我们每两天进行一次更新。我希望用户能够看到最新版本,而不必点击刷新按钮。 - Nate Pet
2
这是否仅适用于HTML文件本身,还是所有引用的资源也适用?此外,这对HTML5也适用吗? - Benny Bottema
@Plantface 是的,只需要HTML文件。所有引用的资源都需要返回类似的HTTP响应头。每个引用的资源都是单独的HTTP请求。可以使用任何版本的HTML。但这实际上是一个HTTP协议的问题,而不是HTML的问题。 - MrWhite
显示剩余2条评论

13

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