故事
我有一个使用传统浏览器缓存的网站,该网站被大量缓存,静态内容长达 365 天。
为了在部署新版本后清除缓存,我使用了一个版本标识符的查询字符串,例如:
<script src="js/main.js?version=1.3.0"></script>
但是对于版本的每次升级,加载时间都很糟糕,因为当查询字符串发生变化时,浏览器需要下载所有新内容。
情况
现在,我们有了 Service Worker,我已经将它集成到我的网站中。到目前为止一切正常,版本标识符的查询字符串仍然可以使用。
// simply cache all the static contents
global.toolbox.router.get('/', global.toolbox.networkFirst);
global.toolbox.router.get(/(.js|.css|.png|.jpg|.json|.html)/, global.toolbox.fastest);
并且与 SW 集成之前相同的行为仍然存在。然而升级很慢,就像往常一样......
问题
我想知道是否有更好的方法?它可以执行以下操作,并且仍然保留繁重的缓存机制(对于旧浏览器):
- 发现新版本
- 仍然使用最新版本的旧内容,
- 在去获取新版本的所有新内容下,
- 下次用户访问该站点时,他们将使用最新版本。
注意它的目标是在部署新版本时更快地加载站点