【问题标题】:Browsers caching HTML浏览器缓存 HTML
【发布时间】:2017-09-18 22:15:42
【问题描述】:

我正在开发一个带有静态站点生成器的博客。为了获得更好的页面速度,我在我的 nginx 配置文件中启用了图像、javascript 和 css 缓存:

location ~* \.(?:ico|gif|jpe?g|png)$ {
    expires 120d;
}

location ~* \.(?:css|js)$ {
    expires 7d;
}

我页面的<head> 区域没有任何缓存指令。

现在当我发布一篇新文章(这意味着我在本地生成文件并在服务器上scp 它们)并访问我的网站时 - 新文章没有出现!只有当我“硬刷新”网站时才会出现。

这绝对不是我们想要的行为,因为人们可能会来到该网站并不会看到最新的文章。

  • 除非另有说明,浏览器是否缓存 html?
  • 如何防止 html 缓存?

【问题讨论】:

    标签: html caching nginx


    【解决方案1】:

    为资源添加一个唯一的查询字符串,比如:

    <img alt='something' src='/images/foo.jpg?20170421'>
    

    如果您有动态服务器端脚本语言/设置,您通常可以“即时”生成这些查询字符串。

    对于 HTML 本身,您需要将服务器配置为使用无缓存指令提供 HTML。在您的 HTML 中:

    <meta http-equiv="Cache-control" content="no-cache">
    

    【讨论】:

    • 谢谢你的回答。我想我找到了一个更可靠的答案。
    【解决方案2】:

    虽然 Kevin_Kinsey 的解决方案可能有效,但我找到了一个也能很好地完成工作的解决方案:

    我将此添加到我的 nginx 配置中:

    location ~* \.(?:manifest|appcache|html?|xml|json)$ {
        expires -1;
    }
    

    【讨论】:

      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 2017-06-06
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多