什么是style.css?ver = 1标签?

Moo*_*oon 18 css version

我发现有些网站使用css标签style.css?ver=1.这是什么?

目的是?ver=1什么?

我如何在代码中执行此操作?

Mic*_*l M 27

避免缓存CSS.
如果网站更新了他们的CSS,他们会将ver更新为更高的数字,因此浏览器被迫获取新文件而不使用缓存的先前版本.
否则,浏览器可能会获得新的HTML代码和旧的CSS,并且网站的某些元素可能看起来很糟糕.

  • 作为补充说明,您可以添加请求的时间戳而不是版本号,并完全绕过样式表的缓存.这增加了处理,但减少了代码维护. (2认同)

Cra*_*der 8

添加'?ver = 1'会使HTTP请求看起来像带参数的GET查询,并且行为良好的浏览器(和代理)将拒绝缓存参数化查询.当然,表现良好的浏览器(和代理)也应该关注'Cache-control:no-cache','Expires','Last-Modified'和'ETag'响应头(所有这些都被添加到HTTP中)指定正确的缓存行为).

当站点开发人员不知道如何(或者过于懒惰)实现正确的响应头时,'?ver = 1'方法是一种强制行为的昂贵方法.特别是,这意味着每个页面请求都会强制请求CSS文件,即使实际上CSS文件很少变化,如果有的话.

我的推荐? 不要这样做.

  • 不相信我?使用各种浏览器进行测试. (2认同)
  • 截至 2016 年中期,Internet Explorer 11、Chrome 52 和 Firefox 48 都使用查询字符串缓存 CSS 和 JS 资源。显然,诸如 Squid 之类的代理服务器也缓存此类资源(尽管我尚未验证这一点)。 (2认同)

Jos*_*eph 5

?ver=1 的目的是参数化 css 文件,因此当他们发布新的 style.css 文件时,他们会升级版本并强制客户端下载新文件,而不是从缓存版本中提取。


小智 5

如果您正在使用 HTML 和 CSS 或任何其他技术开发 Web 应用程序,并且您正在使用一些外部 CSS 或 JS 文件,您可能会注意到一件事,在某些情况下,如果您对现有 .css 或 .js 文件进行了任何更改那么浏览器不会立即反映更改。

在这种情况下,浏览器不会下载最新版本的 .css 和 .js 文件的新副本,而是使用存储在本地缓存中的这些文件。因此,您看不到最近所做的更改。

<link rel="stylesheet" href="style.css?v=1.1"> 
Run Code Online (Sandbox Code Playgroud)

在上述情况下,当您加载网页时,浏览器会将“style.css”与“?v=1.1”一起视为不同的文件。因此,浏览器被迫下载样式表或脚本文件的新副本。