2012-09-28 57 views
14

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

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

回答

22

您可以用下面的办法:

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

他指的查询字符串使用一个随机数。你知道吗? – Amir

+0

你不能使用javascript来为你生成随机数吗? – Anshu

+0

是啊! javascript是一个不错的选择 – Amir

1

您可以在其他CSS后添加另一个CSS规则,这将覆盖加载图像的规则和使用图像与一个增加的版本号。

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

如果你不能这样做,那么你是拧紧。您必须更改加载的图像的URL,以确保获取新图像。

0

您可以在htaccess中添加Expires,但如果图片真的很大,那么我会建议您不要这样做。至于你问没有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> 
1

几件事我喜欢把这里

  1. 图片,JS,在HTML页面被称为CSS文件缓存在浏览器基于URL
  2. 变化在URL中将向服务器发出一个新的请求并存储最新的缓存。

您只需更改URL即可。

虽然您修改了css样式表,但您需要更新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" />