如何在 nginx 中为 html 个文件使用 HTTP 缓存?

How to use HTTP caching in nginx for html files?

我当前的 HTTP 内容缓存的 nginx 配置是这样的:

location ~* \.html$ {
    expires -1;
}

location ~* \.(css|js|gif|jpe?g|png)$ {
    expires 168h;
    add_header Pragma public;
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

如您所见,我已禁用 HTML 文件的缓存,因为它们的更新非常频繁。 现在我想通过使用脚本重命名我的 html 文件的父目录来更新我的配置,启用 HTML 缓存。来自:

view/*.htmls

view/randomString/*.htmls

所以,基本上发生的事情是我所有的 html 文件将被移动到一个随机名称的目录,该目录将在每次部署网络应用程序时生成。这是正确的方法吗?或者已经有更好的方法来实现这一目标?

更好地掌握 HTTP 缓存的工作原理。阅读 RFC.

的那一部分是个好主意

您可以提供实体标签缓存验证器(或 ETags) a try. You can have nginx create etags for your html files. Al you have to do to have nginx regenerate them is change the timestamp by touching 您更改的所有文件,而不是更改每个版本的所有 url 并破坏人们可能创建的所有书签。

PS 如果你 运行 真的很忙,并且想避免 ETag 为检查它们所做的请求。您可以像其他文件一样设置一个较长的到期日期,并通过将 ?randomstring 附加到 url 来更改 url,如 Cache busting via params

中所述