3

标题可能有点糟糕或具有误导性,但这是我的问题:

有没有一种好方法可以确保如果有人过去访问过我的网站,然后在一段时间后重新访问它,旧内容将不会显示而新内容会在那里?

4

3 回答 3

3

我在我的 php 中添加了这样的内容 - 在你写出其他任何内容之前一定要发送标题......

  header("Cache-Control: no-cache, must-revalidate"); 
  header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
于 2013-04-23T14:13:28.570 回答
1

可能显示旧内容的原因是它已被缓存。并且用户的浏览器可能会从缓存中获取内容。如果它没有被缓存,那么用户每次在浏览器中打开网站时都会得到新的内容。

我猜你想有一个选项来强制用户的浏览器显示更新的页面,即使浏览器在缓存中有页面。该页面仍可能被缓存,但是当您有新版本时,您希望用户看到新版本。

我建议考虑以下方法。您可以在站点的页面 URL 中添加参数,并在内容更改时更改此参数。例如:

http://example.com/code.js?version=22

我将这种方法用于 CSS 和 JS 文件。通常它们应该被缓存很长时间,可能是几周或几个月。但是当文件更新时,用户应该得到新版本。

这与正常的缓存控制无关。但是当您希望文件和页面被缓存并控制何时应该更新它们时,可以解决任务。

请让我知道,如果你有任何问题。

于 2013-04-23T14:27:38.623 回答
1

使用 http 标头条目来关闭缓存:

<head>
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate" />
    <meta http-equiv="Cache-Control" content="post-check=0, pre-check=0" />
    <meta http-equiv="Pragma" content="no-cache" />
</head>
于 2013-04-23T14:15:43.330 回答