Workbox:无法重新验证预先缓存的项目?

问题描述 投票:0回答:1

我正在使用Workbox使CMS网站脱机。我有服务人员安装和预缓存站点页面,资产和脱机页面。问题在于,使用预缓存时,如果不修改服务工作程序,似乎无法更新缓存。就我而言,它是CMS,因此在更新网站内容时,作者将不会重新构建此服务工作者。我以为我只能使用StaleWhileRevalidate策略,但令我沮丧的是,没有办法为“ precacheAndRoute()”或“ precache()”和“ addRoute()”提供缓存策略。这似乎是Workbox团队的疏忽,但可以肯定的是,我希望获得关于如何在网站页面更新时不更改服务工作者的情况下实现此解决方案的任何反馈。

谢谢!

offline-caching workbox
1个回答
0
投票

回答了我自己的问题。如果有人遇到类似情况,将在此处发布。

根据https://developers.google.com/web/tools/workbox/modules/workbox-precaching#serving_precached_responses,以下信息提示我解决方案:

调用precacheAndRoute()或addRoute()的顺序很重要。通常,您希望在service worker文件中尽早调用它,然后再通过registerRoute()注册任何其他路由。如果您确实先调用registerRoute(),并且该路由与传入请求匹配,则在该附加路由中定义的任何策略都将用于响应,而不是工作箱预缓存使用的缓存优先策略。

所以我转储了“ precacheAndRoute()”,而只支持“ precache()”。然后,我使用与那些资产匹配的StaleWhileRevalidate策略进行了一个registerRoute()。重要的部分是将cacheName指定为预缓存:

new workbox.strategies.StaleWhileRevalidate({
    cacheName: workbox.core.cacheNames.precache
})

事后看来很简单,但是起初文档尚不清楚应该在preCacheAndRoute中内置什么东西。

© www.soinside.com 2019 - 2024. All rights reserved.