0

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

我一直在更新我们的网站,并且(和许多人一样)遇到了这个与页面速度有关的杠杆浏览器缓存问题。现在,与其急于求成并更改我们的 .htacess 文件,还不如让用户在几周和几周内看到旧内容,我想我最好做一些阅读,花了半天时间做这些,我现在明白它是什么以及“破坏”缓存”。

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

但是,假设我们有一个本身未更新的 .css 文件,但 .css 文件中的其中一个图像已更新并且在没有时间戳的情况下被引用,从我所阅读的内容来看,浏览器仍将使用缓存版本!我对么..?

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

很抱歉这篇冗长的帖子,我只是想尽可能清楚地说明这一点。

在此先感谢,加里。

4

1 回答 1

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 中设置为缓存。

于 2012-04-16T20:00:40.400 回答