CSS中图像URL上的缓存阻止程序是否会导致额外请求?

CSS中图像URL上的缓存阻止程序是否会导致额外请求?,css,caching,optimization,browser-cache,Css,Caching,Optimization,Browser Cache,如果我在CSS中的一个规则中将缓存buster添加到图像URL中 background: url(../img/sprite.png?version=20130205) no-repeat -75px -208px; 但是同样的CSS也有其他版本的URL,没有缓存buster background: url(../img/sprite.png) no-repeat 0 0; 这是否会导致另一个对sprite.png的请求 另外,如果浏览器首先解析非缓存损坏的URL,我会假设它显示缓存图像(如

如果我在CSS中的一个规则中将缓存buster添加到图像URL中

background: url(../img/sprite.png?version=20130205) no-repeat -75px -208px;
但是同样的CSS也有其他版本的URL,没有缓存buster

background: url(../img/sprite.png) no-repeat 0 0;
这是否会导致另一个对sprite.png的请求


另外,如果浏览器首先解析非缓存损坏的URL,我会假设它显示缓存图像(如果有),但当涉及缓存损坏的版本时,会请求图像的新版本-我是否正确?

是的,您正确。所有要点。当
后面的部分不同时,它总是重新加载。

是,它将导致对图像的新请求。如果是
图像将重新加载

如果您不想发出新请求,请在示例中使用
#

background: url(../img/sprite.png#version=20130205) no-repeat -75px -208px;

感谢Enve,我刚刚检查了一个http监视器,它确实创建了第二个请求。我猜如果一个哈希字符串不引起第二个请求,它也不会作为缓存清除器工作,但感谢您的澄清!不完全正确。基于Squid的代理服务器往往会忽略URI查询字符串部分的差异,因此强烈建议使用不同的名称,即
sprite-20130205.png
而不是
sprite.png?2013025
等。但是,无论如何都会执行请求,因此从浏览器的角度来看,无论使用何种代理,都会重新加载请求。