当前位置: 首页 > Web前端 > HTML

WebServer上设置缓存响应字段的一些推荐方案

时间:2023-03-28 12:16:16 HTML

前端开发者的一个普遍误区是,看到下图没有缓存控制的HTTP响应头字段时,会误认为HTTP缓存已被禁用。否则。省略Cache-Control响应标头不会禁用HTTP缓存!相反,浏览器会有效地猜测哪种类型的缓存行为对于给定类型的内容最有意义。版本化的URL是一种很好的做法,因为它们可以更容易地使缓存的响应无效。在响应包含指纹或版本信息且内容永不更改的URL请求时,将Cache-Control:max-age=31536000添加到您的响应中。设置这个值告诉浏览器,当它需要在下一年的任何时间(31,536,000秒;支持的最大值)加载相同的URL时,它可以立即使用来自HTTP缓存的值,而无需向网络web发出远程请求服务器,从而立即获得避开网络的可靠性和速度。像webpack这样的构建工具可以自动将哈希指纹分配给资产URL。不幸的是,在实践中,并非所有加载的URL都是版本化的。或者可能无法在部署Web应用程序之前包含构建步骤,因此无法将哈希添加到资产URL。并且每个Web应用程序都需要HTML文件——这些文件几乎不会包含版本信息,因为如果客户端需要记住要访问的URL是https://example.com,那么就没有人愿意使用带有版本信息的URLWeb应用程序,例如/index.13def12.html。光靠HTTP缓存还不足以完全避开网络,还需要ServiceWorker的帮助。以下Cache-Control值可以帮助开发人员微调未版本化URL的缓存位置和方式:no-cache:这指示浏览器在每次使用URL的缓存版本之前重新向服务器进行身份验证。no-store:这指示浏览器和其他中间缓存(例如CDN)从不存储文件的任何版本。private:浏览器可以缓存文件,中间缓存不能。public:响应可以被任何缓存存储。