我在这里的第一篇文章,在这里做了很多阅读,其中一些非常有帮助。然而,虽然浏览器缓存上有很多帖子似乎没有覆盖我的观点。
我一直在更新我们的网站,并且(有许多人)遇到了这个带有页面速度的杠杆浏览器缓存问题。现在,而不是跳枪并改变我们的.htacess文件,并坚持用户看到旧内容数周&几个星期我觉得我最好做一些阅读,花了半天时间这样做我现在明白它是什么,也是“破坏缓存”。
据我所知,如果我对我的.css文件或图像文件进行了更改并且我使用了时间戳它会更新,例如top_nav.png?123456更改为top_nav.png?654321这将更新并重新启动 - 缓存,因为浏览器会将其视为新资产。
但是,假设我们有一个本身没有更新的.css文件,但.css文件中的一个图像被更新并被引用了一个时间戳,从我读过的浏览器仍然会使用一个缓存的版本!我纠正了吗??
这是否意味着.css文件中的所有图像都有时间戳,这意味着当图像更新时,实际上.css文件也会更新,导致浏览器重新加载.css文件,从而重新加载图像。 / p>
对于冗长的帖子感到抱歉,只是尽力说清楚。
提前致谢, 加里。
答案 0 :(得分:0)
强制客户端更新文件的名称更改是正确的。但是,缓存不是递归的;缓存的.css文件并不意味着图像或其链接到的其他内容也会被缓存。
例如,假设我在.htaccess文件中有这个:
<filesMatch "\.(xml|txt|js|css)$">
Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>
用户请求index.html,它引用css文件。 css文件还引用了一些背景.jpg图像。如果用户之前访问过该页面,则会缓存css文件,但会重新加载.jpg图像,因为它们未在.htaccess中设置为缓存。