我正在尝试通过工作箱实现服务工作者。 一切都在线缓存,但是当我离线时,我收到“ ERR_INTERNET_DISCONNECTED”错误消息。当我离线时,我的预缓存和运行时缓存也消失了。
当我编写自己的提取方法(不使用工作箱路由方法)时,serviceworker正在脱机工作。据我了解,获取请求是由路由方法中的处理程序处理的,还是我错了?那么,在离线模式下,我的应用程序无法正常工作吗?
这是我的serviceworker源文件(在构建过程中将添加预缓存文件):
importScripts(
"https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"
);
workbox.precaching.precacheAndRoute([]);
self.addEventListener("message", event => {
if (event.data && event.data.type === "SKIP_WAITING") {
self.skipWaiting();
}
});
const bgSyncPlugin = new workbox.backgroundSync.Plugin("myQueueName", {
maxRetentionTime: 24 * 60 // Retry for max of 24 Hours (specified in minutes)
});
workbox.routing.registerRoute(
/\/api\/.*\/*.json/,
new workbox.strategies.NetworkOnly({
cacheName: "apiCallCache",
plugins: [bgSyncPlugin]
}),
"POST"
);
workbox.routing.registerRoute(
//match
/\.(?:png|jpg|jpeg|svg|gif|css|js)$/,
//handler
new workbox.strategies.StaleWhileRevalidate({
cacheName: "runtimeCache"
})
);
感谢您的帮助!