阻止Chrome缓存我的网站

时间:2016-03-09 20:15:39

标签: html .htaccess google-chrome caching web

我正在托管一个网站(Apache),因为我经常在内容中进行更改,我想阻止浏览器缓存它。

这是我的一些HTML文件中的<head>字段(经常更改的文件)。

<head>
  <meta http-equiv="Content-Language" content="en-gb">
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
  <meta name="description" content="...">
  <meta name="keywords" content="...">
  <link rel="stylesheet" type="text/css" href="styles/sitestyle.css" media="screen" />


  <title> ... </title>

  <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"/>
</head>

不幸的是,由于Chrome继续缓存网站,因此无法正常工作。但同样奇怪的是,即使我清除浏览器的缓存,它仍然显示为网站的旧版本。

我更改和上传的文件是正确的,我知道,因为当我从隐身窗口打开网站时,更改会正常显示!

我还尝试在.htaccess文件中包含这段代码,但这仍然无效并导致同样奇怪的事情,从隐身我可以看到更改,但不是来自Chrome与清除缓存。

<IfModule mod_headers.c>
    Header set Cache-Control "no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires 0
</IfModule>

任何人都知道为什么会这样吗?

感谢您的任何建议:)

1 个答案:

答案 0 :(得分:1)

提醒两件事:

  1. 请记住,今天更改缓存时间(从1个月回到1分钟),无法看到效果,直到旧的缓存时间过去。 (所以下个月没有更多的旧规则使用缓存,并在那个月之后:检查每分钟的新鲜度。)
  2. 不仅您的浏览器使用缓存,而且代理也使用缓存。所以你只需要等到旧的chache时代过去了。 如果您想要立即改变,唯一的选择是(如已建议的那样),使用不同的文件名。这也在Google Developers on caching - 底部的注释中进行了解释。