为什么Google Chrome不荣誉缓存头?

sqyvllje  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(102)

这是我发送回给用户的头。这是从Chrome DevTools下载的:


的数据
当我关闭DevTools并刷新页面时,我的服务器中仍然会收到此映像的请求。
Here它声称,谷歌不荣誉缓存,当我们刷新页面。
我试着从一个新的标签页打开页面,该高速缓存工作。然而,当我点击刷新按钮时,Chrome并不荣誉该高速缓存头。
我的问题是,为什么Google Chrome会这样做?我的意思是,人们期望缓存头文件成为主流浏览器遵守的通用标准。如果Google Chrome不符合HTTP标准,我如何确保我的内容会因性能原因而被缓存?

pu82cl6c

pu82cl6c1#

因为很多网站的缓存实现不正确,缓存头并不总是可靠的。一个折衷的办法是,如果用户对页面进行了硬刷新,则重新下载页面,这到底是什么定义的?好吧,对于一些浏览器,它曾经是按F5Ctrl+R,但简单地按 * 刷新 * 多次可能也足够了,因为你不能指望用户知道一个秘密的快捷方式为 * 硬刷新 * -无论哪种方式,这对性能没有多大影响,因为用户通常不会按刷新,除非他们真的打算刷新页面
当然,另一种方法是如果你在开发者工具中选中了禁用缓存的复选框,导致Chrome重新下载所有内容,包括链接的资源;如果您删除复选标记,它会说资源是在刷新时从(memory cache)加载的,这意味着它们是根据资源该高速缓存策略从浏览器缓存加载的。

注意,Chrome浏览器在网络选项卡中仍会显示缓存请求,但会显示为从(memory cache)加载。

TLS证书错误还可能导致页面无法正确缓存。例如,如果您的证书是自签名的。
此外,我无法复制你提到的行为;也就是说,当点击刷新按钮时,只刷新.html页面本身,而不是链接的资源,例如:imagesvideoJavaScriptCSS -但这可能是您的Chrome版本特有的bug。当我按刷新,甚至多次,资源仍然从浏览器缓存加载根据我的网站缓存策略。我通过在刷新页面时实时监控服务器日志来验证这一点。例如:

watch tail /var/log/xxx/sitename-access.log

字符串

相关问题