Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 强制刷新背景图像_Css - Fatal编程技术网

Css 强制刷新背景图像

Css 强制刷新背景图像,css,Css,有没有办法确保最近更新的某个背景图像确实出现在每个人的浏览器上的最新版本中(而不是缓存中存储的旧版本) 它必须是一种解决方案,不涉及到调用CSS的代码行(我可以在CSS文件名后加上问号和版本号,例如:,但在这种情况下,我无法访问代码的这一部分)您可以使用以下方法: .button { background: url(../Images/button.png?v=1234); } 您可以在其他CSS之后添加另一个CSS规则,该规则覆盖加载图像并使用添加了版本号的图像的规则 稍后加载的CS

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


它必须是一种解决方案,不涉及到调用CSS的代码行(我可以在CSS文件名后加上问号和版本号,例如:
,但在这种情况下,我无法访问代码的这一部分)

您可以使用以下方法:

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

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

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


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

您可以在
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>

FileTag无
标题未设置ETag
标题集缓存控制“最大年龄=0,无缓存,无存储,必须重新验证”
标题集Pragma“无缓存”
标题集过期“1984年1月11日星期三05:00:00 GMT”

我想在这里放几样东西

  • HTML页面中引用的图像、JS、CSS文件基于URL缓存在浏览器中
  • URL的更改将向服务器发出新请求,并将最新的请求存储在缓存中
  • 您所需要做的就是更改URL

    尽管修改了css样式表,但仍需要更新HTML以供css参考

    background: url(../Images/button.png?v=1234);
    
    例:
    http://www.site.com/css/style.css
    http://www.site.com/css/style.css?ver=002

    <link rel="stylesheet" href="css/style.css?ver=002" type="text/css" />
    
    
    
    他的意思是在查询字符串中使用随机数。你知道怎么做吗?你不能用javascript为你生成随机数吗?一个问题:如果我添加“?=…”标记,然后我将它上传到我的网站,(刷新后)我应该从URL中删除“?=…”吗?@BenceUszkai你忘记了一个v。它说的是
    ?v=
    ,而不是
    ?=