Caching 利用浏览器缓存&;CSS引用图像

Caching 利用浏览器缓存&;CSS引用图像,caching,browser,Caching,Browser,我在这里的第一篇文章,在这里做了很多阅读,其中一些非常有用。然而,尽管有很多关于浏览器缓存的帖子,但似乎没有一篇能涵盖我下面的观点 我一直在更新我们的网站,并且(和许多人一样)遇到了利用浏览器缓存页面速度的问题。现在,与其匆忙改变我们的.htacess文件,让用户看到旧内容长达数周&数周,我想我最好做一些阅读,花了半天时间这样做,我现在明白了它是什么,也明白了“破坏缓存”的含义 我知道,如果我更改了.css文件或图像文件,并且使用了时间戳,它将更新,例如top_nav.png?123456更改为

我在这里的第一篇文章,在这里做了很多阅读,其中一些非常有用。然而,尽管有很多关于浏览器缓存的帖子,但似乎没有一篇能涵盖我下面的观点

我一直在更新我们的网站,并且(和许多人一样)遇到了利用浏览器缓存页面速度的问题。现在,与其匆忙改变我们的.htacess文件,让用户看到旧内容长达数周&数周,我想我最好做一些阅读,花了半天时间这样做,我现在明白了它是什么,也明白了“破坏缓存”的含义

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

但是,假设我们有一个.css文件,它本身没有更新,但是.css文件中的一个图像被更新,并且引用时没有时间戳,根据我所读的,浏览器仍然使用缓存版本!我说得对吗

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

很抱歉这篇长篇大论的文章,我只是想尽我所能把重点讲清楚

提前感谢,,
Gary。

关于强制客户端更新文件的名称更改,您是正确的。然而,缓存不是递归的;缓存的.css文件并不意味着它链接到的图像或其他内容也会被缓存

例如,假设我在.htaccess文件中有以下内容:

<filesMatch "\.(xml|txt|js|css)$">
    Header set Cache-Control "max-age=172800, public, must-revalidate"
</filesMatch>

标题集缓存控制“最大年龄=172800,公共,必须重新验证”

用户请求index.html,它引用css文件。css文件还引用了一些background.jpg图像。如果用户以前访问过该页面,css文件将被缓存,但是.jpg图像将被重新加载,因为它们没有在.htaccess中设置为缓存。

Hi@erikreed,感谢您的回复,我想这是一种方法。但是,如果我缓存了添加png | jpg |等的图像文件,那么css引用的图像会被缓存吗。。?这就提出了一个问题:更新css文件会导致更新所有引用的图像吗?是的,添加
png | jpg
会导致缓存css中引用的图像。如果引用的图像以前被设置为缓存,那么更新css不会导致更新它们——这不是递归的。