【发布时间】:2010-09-12 04:01:52
【问题描述】:
当我们在新代码提交后开发新站点或测试涉及 css 的新站点的更改时,有人去检查更改时,他们总是会看到旧 css 的缓存版本。这在测试中引起了很多问题,因为人们永远不确定屏幕上是否有最新的 css(我知道 shift 和单击刷新会清除此缓存,但我不能指望最终用户知道这样做)。我有哪些可能的解决方案?
【问题讨论】:
当我们在新代码提交后开发新站点或测试涉及 css 的新站点的更改时,有人去检查更改时,他们总是会看到旧 css 的缓存版本。这在测试中引起了很多问题,因为人们永远不确定屏幕上是否有最新的 css(我知道 shift 和单击刷新会清除此缓存,但我不能指望最终用户知道这样做)。我有哪些可能的解决方案?
【问题讨论】:
在您的开发环境中,将 Expires 标头设置得更低。在您的生产环境中,将其设置得较高,然后在发布前一周左右将其设置为较低。
【讨论】:
如果您从静态文件(或与查询字符串无关的任何内容)提供 CSS,请尝试改变它以确保浏览器发出新的请求,因为它会认为它正在拉一个完全不同的资源,例如:
"styles.css?token=1234" 在您的标记中的 CSS 参考中,并在每次 CSS 签入时更改 "token" 的值
【讨论】:
这不是一个很好的解决方案,但我之前在页面级别通过在对 CSS 文件的调用末尾添加一个查询字符串来解决这个问题:
<link href="/css/global.css?id=3939" type="text/css" rel="stylesheet" />
然后我会随机化 id 值,以便它在页面加载时始终加载不同的值。然后我会在投入生产之前取出这段代码。我想您也可以从配置文件中提取值,这样每次提交只需加载一次。
【讨论】:
针对此问题的 JavaScript 版本给出的类似(更详细一点)答案,具有相同的问题/解决方案
【讨论】: