我发现有些网站使用像style.css?ver=1
这样的css标签。这是什么?
?ver=1
的目的是什么?
我如何在代码中执行此操作?
答案 0 :(得分:27)
避免缓存CSS
如果网站更新了他们的CSS,他们会将ver更新为更高的数字,因此浏览器被迫获取新文件而不使用缓存的先前版本。
否则,浏览器可能会获得新的HTML代码和旧的CSS,并且网站的某些元素可能看起来很糟糕。
答案 1 :(得分:8)
添加'?ver = 1'使HTTP请求看起来像带参数的GET查询,并且行为良好的浏览器(和代理)将拒绝缓存参数化查询。当然,表现良好的浏览器(和代理)也应该关注'Cache-control:no-cache','Expires','Last-Modified'和'ETag'响应头(所有这些都被添加到HTTP中)指定正确的缓存行为)。
当站点开发人员不知道如何(或者过于懒惰)实现正确的响应头时,'?ver = 1'方法是一种强制行为的昂贵方法。特别是,这意味着每个页面请求都会强制请求CSS文件,即使实际上CSS文件很少发生变化(如果有的话)。
我的推荐? 不要这样做。
答案 2 :(得分:4)
?ver = 1的目的是参数化css文件,所以当他们发布一个新的style.css文件时,他们会更新版本并强制客户端下载新文件,而不是从缓存版本中提取
答案 3 :(得分:4)
我认为?ver=1
适用于版本号。的网络应用程序。每次创建新版本时,应用程序都可以将ver
更新为新版本。这样浏览器将加载新的CSS文件而不使用缓存的文件(两者都使用不同的文件名)。
答案 4 :(得分:2)
如果您正在使用HTML和CSS或任何其他技术开发Web应用程序,并且您正在使用一些外部CSS或JS文件,您可能会注意到在某些情况下,如果您对现有.css或.js文件然后浏览器没有立即反映更改。
在这种情况下,浏览器不会下载最新版本的.css和.js文件的新副本,而是使用存储在本地缓存中的那些文件。因此,您最近所做的更改对您不可见。
<link rel="stylesheet" href="style.css?v=1.1">
上述情况下,当您加载网页时,浏览器会将“style.css”视为另一个文件以及“?v = 1.1”。因此,如果样式表或脚本文件,浏览器将被迫下载新的副本。
答案 5 :(得分:1)
IMO更好的方法是包括根据文件大小生成的哈希值或基于文件内容或最后修改日期的校验和。这样您就不必更新某个版本号,只需将数字从文件的更改属性中删除。