13

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

4

4 回答 4

9

如果您从静态文件(或与查询字符串无关的任何内容)提供 CSS,请尝试改变它以确保浏览器发出新请求,因为它会认为它正在拉取一个完全不同的资源,所以例如:

"styles.css?token=1234" 在您的标记中的 CSS 参考中,并在每次 CSS 签入时更改 "token" 的值

于 2008-09-22T20:58:19.250 回答
5

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

于 2008-09-22T20:57:11.733 回答
2

这不是一个很好的解决方案,但我之前在页面级别通过在对 CSS 文件的调用末尾添加一个查询字符串来解决这个问题:

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

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

于 2008-09-22T21:01:06.000 回答
2

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

帮助积极的 JavaScript 缓存

于 2009-03-18T22:05:15.433 回答