Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在nginx中为html文件使用HTTP缓存?_Html_Caching_Nginx_Web Hosting_Http Caching - Fatal编程技术网

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

如何在nginx中为html文件使用HTTP缓存?,html,caching,nginx,web-hosting,http-caching,Html,Caching,Nginx,Web Hosting,Http Caching,我目前针对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

我目前针对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文件都将被移动到一个随机名称的目录中,这个目录将在每次部署web应用程序时生成。这是正确的方法吗?还是已经有更好的方法来实现这一点

了解HTTP缓存的工作原理。阅读这篇文章的那一部分是个好主意

您可以尝试使用实体标记缓存验证器(或),而不是在每次发布时更改所有URL并破坏人们可能制作的所有书签。您可以为您的html文件创建一个。要让nginx重新生成这些文件,您所要做的就是通过标记所有更改的文件来更改时间戳


如果您运行了一个非常非常繁忙的事情,并且希望避免ETag为检查它们而执行的请求,请使用PS。您可以像其他文件一样设置长过期日期,并通过在URL中添加
?randomstring
来更改URL,就像在
HTML文件中解释的那样,因为它们更新得非常频繁
这与问题无关,但是如果您经常更新HTML,您可能应该使用内容管理系统(CMS)相反,频繁更新文本文件并不是使用cms的理由。源代码是一组频繁更新的文本文件,但我没有看到任何人将cms用作开发工具。我忘了提到我使用angular http拦截器来附加随机字符串。因此,它不会更改url。但您的解决方案似乎更简单好的,谢谢。