尽管缓存指令 max-age 为 30 天,我如何强制浏览器检查新版本?

尽管缓存指令 max-age 为 30 天,我如何强制浏览器检查新版本?

我的网站根目录中有以下声明:

<staticContent>
    <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>

我认为这会告诉浏览器不要查找任何文件的新版本,除非它超过 30 天 - 对吗?

这不是我的本意,我已经修改了说明,但是尽管有旧说明,一些浏览器现在仍在更新,但有些浏览器却没有。有没有办法强制浏览器立即查找新版本?

谢谢。

答案1

如果浏览器没有对文件发出请求(直到文件过期),那么您就无法给它提供新的缓存指令。

但是,我注意到 staticContent 位。如果这仅适用于静态内容,而不适用于(可能)动态的 html 页面,那么您可以更改 html 中引用的 url。这可能很容易组织,也可能不容易,具体取决于您如何生成内容,但总的来说,这是一种非常合理的策略。

例如,你可以获取 css 文件路径(或你引用的任何其他静态内容),加上上次更改的时间戳,连接这些字符串,然后对它们进行 md5 哈希处理。然后使用如下 URLhttp://example.com/static/{your_md5sum}.css 放在您的 html 中,并复制或链接 css 内容,以备在该路径上提供。然后,您可以始终提供具有多年有效期的 css 链接,但只要您愿意,就不要再使用旧版本。如果您想保留旧版本,这也是很好的,因为例如,它们可以与人们可能已在网络上其他地方复制的旧版页面、旧电子邮件或其他任何东西一起使用(后者更多地用于图像而不是 css)。

一个稍微简单的机制可能是只在路径中添加时间戳,例如http://example.com/foo/bar.css?t=1377075018,时间戳取自本地服务器上文件的修改时间。

相关内容