【问题标题】:Prevent Chrome from caching my Website防止 Chrome 缓存我的网站
【发布时间】:2016-06-24 10:09:56
【问题描述】:

我正在托管一个网站 (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>

有人知道为什么会这样吗?

感谢您的建议:)

【问题讨论】:

  • 您可以在 css 和 js URL 参数中添加随机字符串/数字,例如:styles/sitestyle.css?v=12345 每次刷新。但我想这不能完全回答你的问题。

标签: html .htaccess google-chrome caching web


【解决方案1】:

提醒两件事:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2014-11-24
    • 1970-01-01
    • 2014-07-16
    • 2017-05-23
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多