2

我正在尝试将现有项目从手动管理所有内容的服务人员转换为由workbox 3 (beta).

Precache 工作得非常好。但是,routing.registerRoute无论我尝试什么,该方法都不起作用。下面的示例与文档中的完全一样,但是无论何时获取图像,image-cache都不会生成图像,也不会缓存图像。

任何关于我在这里可能做错的指针将不胜感激。

其次,这两个事件侦听器messagepush不再起作用。

importScripts('workbox-v3.0.0-beta.0/workbox-sw.js');

/**
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
*/
workbox.precaching.precacheAndRoute([...<snip>...]);

workbox.routing.registerRoute(
    /.*\.(?:png|jpg|jpeg|svg|gif)/g,
    new workbox.strategies.CacheFirst({
        cacheName: 'image-cache',
    })
);


self.addEventListener('message', function(ev) {
    if (ev.data.action === 'skipWaiting') { self.skipWaiting(); }
});

self.addEventListener('push', function(ev) {
    if (ev.data) {
        var data = ev.data.json();
        var title = data.title;
        const promiseChain = self.registration.showNotification(title, data);
        ev.waitUntil(promiseChain);
    }
});
4

2 回答 2

1

没错,所以我最终想通了。我犯了一个新手错误。我的服务人员在错误的范围内;)

基本上,我的服务人员位于/static/build/sw.js并且我试图将图像缓存在/static/img/...... doh!

于 2018-02-09T13:23:39.690 回答
0

我不确定是否还有其他问题,但它应该是 workbox.strategies.cacheFirst 而不是 workbox.strategies.CacheFirst。

于 2018-02-04T08:15:56.280 回答