繁体   English   中英

缓存差异是“ /image.png”和“ /image.png?xyz”吗?

[英]Cache difference btw “/image.png” and “/image.png?xyz”?

我们需要推送一个在.css文件中多次引用的Sprite的新版本,因此我认为我应该在文件名后附加一个模拟查询字符串。 但是,一位同事声称,只要在“?”之前的所有内容都只需更改第一个引用即可。 保持原样。 我很难相信,但是他正确吗?

我会这样做:

.class1 {
    background-image:url(/path/sprite.png?xyz=123);
}

.class2 {
    background-image:url(/path/sprite.png?xyz=123);
}

他声称您可以这样做:

.class1 {
    background-image:url(/path/sprite.png?xyz=123);
}

.class2 {
    background-image:url(/path/sprite.png);
}

根据我的同事的说法,这将导致两个类使用相同的文件,因为新版本的sprite.png将在class1中的引用之后被缓存。

我以前使用过这种技术。 最好使用Apache来控制缓存。 mod_expires是研究如何实现此目标的好地方。 图像标题说明其到期时间。

编辑

已确认。 向图像添加查询字符串会将精灵推向用户。 危险在于,它可能导致特定图像永远不会被缓存,具体取决于浏览器。 这可能会导致网站加载速度低于所有图像或大背景图像所使用的加载速度。

我可以确认,每次访问站点时,Firefox都会始终提取图像。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM