0

Service Worker 不会安装,并且会一直处于冗余状态。刷新页面将添加更多处于冗余状态的服务工作者(灰色指示符)。

我在 self.addEventListener 函数参数中尝试了 console.log("installed") 并且它有效。Service Worker 被标记为已激活并正在运行(绿色指示灯)

下面会让service worker变得多余

self.addEventListener("install", function (event) {
    event.waitUntil(
        caches.open(CACHE_NAME).then(function (cache) {
            var newImmutableRequests = [];
            return Promise.all(
                immutableRequests.map(function (url) {
                    return caches.match(url).then(function (response) {
                        if (response) {
                            return cache.put(url, response);
                        } else {
                            newImmutableRequests.push(url);
                            return Promise.resolve();
                        }
                    });
                })
            ).then(function () {
                return cache.addAll(newImmutableRequests.concat(mutableRequests));
            });
        })
    );
});

下面将工作,但它不缓存文件

self.addEventListener("install", function (event) {
    console.log("installed");
});

我希望安装服务工作者并能够缓存文件,但它会进入冗余状态。

4

1 回答 1

1

检查控制台是否有错误。如果服务人员失败,它将进入“冗余”状态。

您的代码中至少存在一个问题:

return caches.match(url).then(function (response) {

应该是cache没有的s吧?caches是全局缓存 API 接口,而cache在您的代码中,是引用单个缓存实例的变量。

此外,为了更容易在代码中找到错误,请考虑添加错误处理。您的代码中没有任何 Promise.catch 处理程序,所以它只是吞下所有错误:)

于 2019-07-08T18:04:16.043 回答