20

有没有办法确保最近更新的某个背景图像确实出现在每个人的浏览器上的最新版本中(而不是存储在缓存中的旧版本)?

它必须是一个不涉及调用 CSS 的代码行的解决方案(我可以在 css 文件名之后放置一个问号和一个版本号,例如 : <link href="styles.css?v=2" rel="stylesheet" type="text/css"/>,但在这种情况下,我无权访问这部分编码)

4

4 回答 4

30

您可以使用以下方法:

.button {
    background: url(../Images/button.png?v=1234);
}
于 2012-09-28T11:14:28.290 回答
1

您可以在另一个 CSS 之后添加另一个 CSS 规则,它会覆盖加载图像并使用添加了版本号的图像的规则。

稍后加载的 CSS 规则具有更高的优先级,因此您可以使用与主 CSS 中相同的选择器,它会覆盖它。

如果你做不到,那你就完蛋了。您必须更改加载的图像的 URL 才能确保获得新图像。

于 2012-09-28T11:14:51.347 回答
1

我喜欢放在这里的几件事

  1. HTML页面中引用的图片、JS、CSS文件根据URL缓存在浏览器中
  2. URL 的更改将向服务器发出新请求并将最新的请求存储在缓存中。

您需要做的就是更改 URL。

虽然您修改了 css 样式表,但您需要更新 HTML 以供 CSS 参考。

background: url(../Images/button.png?v=1234);

例如: http://www.site.com/css/style.csshttp://www.site.com/css/style.css?ver=002

<link rel="stylesheet" href="css/style.css?ver=002" type="text/css" />
于 2012-09-28T12:04:52.137 回答
0

您可以添加一个Expiresin htaccess,但如果图像真的很大,那么我建议不要这样做。正如您在没有 CSS 的情况下询问的那样,请尝试:

<Files "your_bg.jpg">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</Files>
于 2012-09-28T11:15:50.747 回答