【问题标题】:Does a cache buster on an image URL in CSS cause an extra request?CSS 中图像 URL 上的缓存破坏器是否会导致额外的请求?
【发布时间】:2013-02-05 10:30:54
【问题描述】:

如果我在我的 CSS 中的一条规则中将缓存破坏器添加到图像 URL

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

但相同的 CSS 有其他版本的 URL,没有缓存破坏器

background: url(../img/sprite.png) no-repeat 0 0;

这会导致对 sprite.png 的另一个请求吗?

另外,如果浏览器首先解析非缓存破坏的 URL,我假设它会显示缓存的图像,如果有的话,但是当涉及到缓存破坏的版本时,它会请求图像的新版本 -我猜对了吗?

【问题讨论】:

    标签: css caching optimization browser-cache


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢 Enve,我刚刚检查了一个 http 监视器,它确实创建了第二个请求。我猜如果哈希字符串不会引起第二次请求,它也不会用作缓存破坏器,但感谢您的澄清!
    【解决方案2】:

    是的,你没看错。所有点。当? 后面的部分不同时,它总是会重新加载。

    【讨论】:

    • 不完全正确。基于 Squid 的代理服务器倾向于忽略 URI 的查询字符串部分的差异,因此强烈建议使用不同的名称 - 即 sprite-20130205.png 而不是 sprite.png?2013025 等。
    • 是的。但是无论如何都会执行请求,因此从浏览器的角度来看,无论任何代理,它都会重新加载。
    猜你喜欢
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 2010-11-01
    • 2023-03-17
    • 2018-09-03
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多