【问题标题】:CSS versions in filename?文件名中的 CSS 版本?
【发布时间】:2012-08-27 17:47:55
【问题描述】:

有一个简短的问题。

假设我创建了文件stylesheet.css。在这个文件中:

body {
    background: #000000;
}

现在假设我更改了背景颜色,使此文件版本为 1.0:

body {
    background: #FFFFFF;
}

我是否可以将样式表的链接更改为包含 ?v=1.0?这会迫使浏览器重新加载样式表并使用新的更改来缓存旧设置吗?此外,假设前面的所有内容都是正确的,那么根据版本提交更改是否是一种好习惯?所以就像我在样式表中进行更改并将它们配音足够严重以保证v2.0,然后将样式表提交为“v2.0”?谢谢!

<link rel="stylesheet" href="stylesheet.css?v=1.0">

【问题讨论】:

  • 查看this question 的最高投票答案。它对这个问题有一个优雅的解决方案。
  • ? 之后传递变量是一种导致浏览器重新加载css 的hack。见CSS caching hack

标签: css git web


【解决方案1】:

如果 URL(包括查询字符串)不在浏览器的缓存中,则将请求一个新文件。

是的,这是强制版本控制的有效方法。

【讨论】:

  • 太好了,这就是我想知道的。谢谢!
【解决方案2】:

这确实会强制所有浏览器完全重新加载 CSS,如下所述:

What does '?' do in a Css link?

答案是:

那是为了给文件名添加一些唯一性,这样当 他们更改了 CSS 文件,他们可以将额外的位更改为完全 确保每个客户端都会重新加载 CSS 而不是使用缓存的 版本。

网络服务器将忽略该参数并提供 /Content/all.min.css 正常

顺便说一下,StackOverflow 使用了这种技术。

【讨论】:

    【解决方案3】:

    如果您将链接更改为 ?v=1.0,那么您将覆盖服务器已设置的任何缓存机制,浏览器将看到样式表的新 URL,并重新下载您的新更改,确保让用户立即看到新的变化。

    如果您不附加查询字符串,那么用户将根据您的 Web 应用程序上配置的缓存设置更新他们的样式表,这可能会因配置方式/您使用的框架而有很大差异。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-03
      • 2012-08-11
      • 2012-03-23
      • 2012-10-16
      • 2012-07-03
      • 1970-01-01
      • 2011-05-12
      相关资源
      最近更新 更多