【问题标题】:What the heck is this: background-image: url("/images/sprites.png?v=3"); [duplicate]这是什么鬼: background-image: url("/images/sprites.png?v=3"); [复制]
【发布时间】:2011-08-18 23:43:45
【问题描述】:

可能重复:
What's a queryString doing in this stylesheet's href?

有人可以解释一下css sn-p中1)查询字符串和2)特定名称/值对(例如?v=3)的意义和功能吗?

/*Here is the snippet:*/
    .css-class {
       background-image: url("/images/sprites.png?v=3");
    }

我在http://html5boilerplate.com/ 上也看到过这个用在链接标签上:

   <link rel="stylesheet" href="css/style.css?v=2">

【问题讨论】:

标签: css background-image


【解决方案1】:

很可能 URL 路由到服务器上的静态资源,并且查询字符串只是对 URL 的缓存破坏修改。在推出新版本的网站 UI 后,他们希望确保没有任何图像的旧版本被缓存在客户端的计算机上。

另一种常见的方法是附加时间戳,这会导致资源永远被缓存。

【讨论】:

    【解决方案2】:

    当图像本身发生变化时,查询字符串有助于使浏览器缓存失效。 上下文:通常您希望为图像等静态资源定义较长的缓存过期日期,这样浏览器就不会在每次访问网站时都下载图像。但是,如果网站所有者想要更改图像,他将需要等待很长时间,直到图像在所有访问者的浏览器缓存中过期。 由于他附加了查询字符串,因此网站所有者可以在图像更改时增加该数字。上传新的 css 文件后,所有访问者都会看到新图片,因为它是通过尚未缓存的新 URL 引用的。

    【讨论】:

      【解决方案3】:

      在您链接的 HTML5 样板网站上找到此 URL。 http://html5boilerplate.com/docs/Version-Control-with-Cachebusting/

      【讨论】:

        【解决方案4】:

        就像版本一样。当有新版本时,所有者希望您使用新更新的版本,而不是缓存中的版本,因此更改?v并重新下载CSS

        【讨论】:

        • 你回答了一个你投票结束的问题 - 这就是我投反对票的原因。
        • 重复的事实并不意味着它不值得回答
        • 那为什么要关闭它以使提问者无法从其他人那里得到他们认为有用的答案?
        • 有 6 个答案 - 这已经足够了。仅仅因为你认为我对你的帖子投了反对票而对我投了反对票是很糟糕的
        • @Ryan 欢迎您出于任何原因投反对票,但在这种情况下,Genesis 并没有做错任何事情,而且您也很吝啬。
        【解决方案5】:

        URL 可以引用将请求定向到脚本的 Web 服务器(例如,使用 apache 的 mod_rewrite),但更可能的是,查询字符串用于使 URL 与以前的版本不同,而不修改实际位置,从而导致浏览器缓存将其视为不同的图像。

        【讨论】:

          猜你喜欢
          • 2015-01-14
          • 1970-01-01
          • 2010-10-25
          • 1970-01-01
          • 1970-01-01
          • 2012-11-02
          • 2011-09-17
          • 2017-03-04
          • 1970-01-01
          相关资源
          最近更新 更多