2012-04-16 125 views
0

我的第一篇文章,在这里做了大量的阅读,其中一些非常有帮助。不过,尽管浏览器缓存中有很多帖子,但似乎并未涵盖我的观点。利用浏览器缓存和CSS参考图像

我一直在更新我们的网站,并且(和很多人一样)在页面速度上遇到了这个杠杆浏览器缓存问题。现在,而不是跳过枪,并改变我们的.htacess文件,并与用户看到旧内容的周&周,我认为我更好地做一些阅读,花了半天做这样的事情,我现在明白它是什么,还有'破坏缓存'。

据我所知,如果我对.css文件或图像文件进行了更改,并且我使用了时间戳,它会更新,例如top_nav.png?123456更改为top_nav.png?654321,这将会更新并且重新缓存,因为浏览器会将其视为新资产。

但是,可以说我们有一个.css文件,它本身没有更新,但是.css文件中的一个图像被更新并且被引用了一个时间戳,从我读过的浏览器仍然会使用缓存版本!我对么..?

这是否意味着.css文件中的所有图像都会打上时间戳,因此这意味着更新图像时实际上.css文件也会更新,导致浏览器重新加载.css文件,从而导致图像。

对不起,我只是想说清楚这个问题。

在此先感谢, 加里。

回答

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中。

+0

嗨@erikreed,谢谢你的回复,这将是一种做法,我猜。但是,如果我将图像文件添加到了png | jpg |中,该怎么办呢?等将图像引用css然后被缓存..?然后问这个问题会更新css文件导致所有引用的图像被更新..? – 2012-04-16 20:26:28

+0

是的,如果在css中引用图像,则添加'png | jpg'会导致图像被缓存。更新css不会导致引用的图像被更新,如果它们以前被设置为缓存 - 它不是递归的。 – erikreed 2012-04-17 00:02:01