强制刷新背景图像

时间:2012-09-28 11:06:48

标签: css

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

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

4 个答案:

答案 0 :(得分:27)

您可以使用以下方法:

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

答案 1 :(得分:1)

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

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

如果你不能那样做,那你就搞砸了。您必须更改加载的图像的URL以确保获得新图像。

答案 2 :(得分:1)

我想把几件事放在这里

  1. HTML页面中引用的图像,JS,CSS文件基于URL
  2. 缓存在浏览器中
  3. 更改URL将向服务器发出新请求并存储最新的缓存。
  4. 您需要做的就是更改网址。

    虽然您修改了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" />
    

答案 3 :(得分:0)

您可以在Expires中添加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>