繁体   English   中英

如何在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缓存来更新配置。 从:

视图/ *。HTMLS

视图/ randomString / *。HTMLS

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

掌握HTTP缓存的工作原理。 阅读RFC的这一部分是一个好主意。

您可以尝试使用Entity Tag Cache Validators(或ETags ),而不用每次发布时都更改所有url并破坏人们可能制作的所有书签。 您可以让Nginx为html文件创建etag 要使nginx重新生成它们,您要做的就是触摸所有更改的文件来更改时间戳。

PS,如果您运行的是非常繁忙的事情,并且希望避免使用ETag进行检查的请求。 您可以像设置其他文件一样设置较长的过期日期,并通过将?randomstring附加到url来更改url,如通过params进行的缓存清除中所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM