缓存“/image.png”和“/image.png?xyz”之间的区别?

时间:2013-12-12 07:17:44

标签: css image caching

我们需要推送一个在.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中的引用之后被缓存。

1 个答案:

答案 0 :(得分:0)

我之前使用过这种技术。最好使用Apache来控制缓存。 mod_expires是了解如何实现这一目标的好地方。图像标题表示其到期。

修改

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

我可以确认Firefox每次访问网站时都会提取图像。