IIS CSS缓存

IIS CSS缓存,css,iis,iis-6,Css,Iis,Iis 6,当我们开发新站点或在提交新代码后测试涉及css的新站点中的更改时,有人去检查更改,他们总是看到旧css的缓存版本。这在测试中造成了很多问题,因为人们从来都不确定屏幕上是否有最新的css(我知道shift并单击refresh会清除这个缓存,但我不能期望最终用户知道怎么做)。我可能的解决方案是什么?在您的开发环境中,将Expires头设置得更低。在您的生产环境中,将其设置得较高,然后在发布前大约一周将其设置得较低。如果您是从静态文件(或查询字符串不重要的任何内容)提供CSS,请尝试更改此设置,以确保

当我们开发新站点或在提交新代码后测试涉及css的新站点中的更改时,有人去检查更改,他们总是看到旧css的缓存版本。这在测试中造成了很多问题,因为人们从来都不确定屏幕上是否有最新的css(我知道shift并单击refresh会清除这个缓存,但我不能期望最终用户知道怎么做)。我可能的解决方案是什么?

在您的开发环境中,将Expires头设置得更低。在您的生产环境中,将其设置得较高,然后在发布前大约一周将其设置得较低。

如果您是从静态文件(或查询字符串不重要的任何内容)提供CSS,请尝试更改此设置,以确保浏览器发出新的请求,因为它会认为它正在获取完全不同的资源,例如:


“styles.css?token=1234”在标记中的css引用中,并在每个css签入上更改“token”的值,这不是一个很好的解决方案,但我以前在页面级别通过在css文件调用的末尾添加一个querystring来解决这个问题:

 <link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" />

然后我会随机化id值,以便它在页面加载时总是加载不同的值。然后在投入生产之前,我会把这个代码去掉。我想您也可以从配置文件中提取该值,这样每次提交只需加载一次。

对于这个问题的JavaScript版本,给出了类似(更详细一点)的答案,它有相同的问题/解决方案


我已经使用静态方法将css添加到页面中,因此我在querystring中添加了构建的时间戳,非常感谢。虽然此解决方案可以工作,但对于可能有数百个.css和.js文件引用的大型网站来说,这是完全不实际的。@user357320,我建议您参考本页第21行和第22行,根据某些定义,这是一个“大型网站”。幸运的是,它是一个结构良好、设计良好的网站,因此没有数百个引用需要处理。@Karlth任何网站,尤其是大型网站都应该使用css和js绑定,而且大多数库都在url中生成了时间戳/版本/哈希,因此不必修改数百个css链接。@user3285954“任何网站都应该”说起来容易做起来难!