网络超时后,Javascript Service Worker使用缓存

时间:2017-12-30 21:38:22

标签: javascript caching service-worker offline-caching

我有一个应该离线工作的网络应用程序。 为此我使用javascript服务工作者将必要的文件放入缓存中。 如果连接已启动,则会从网络加载所有资源。 如果没有连接,则从缓存加载资源。 这很好。

现在问题是,如果设备上有互联网连接,但服务器已关闭。 然后它永远不会回退到缓存,因为它有一个互联网连接。

这是我在service-worker.js中的fetch事件的代码:

self.addEventListener('fetch', function(event) {
    event.respondWith(
        fetch(event.request).catch(function() {
            return caches.match(event.request);
        })
    );
});

我的想法是实现一种超时,如果应用程序无法获取内容,请说30秒然后始终使用缓存。 有谁知道如何实现这个?我不符合承诺......

1 个答案:

答案 0 :(得分:1)

我猜您的问题是您没有打开缓存实例,然后将请求与该缓存相匹配。您错误地使用了缓存API。

您需要以下内容:

返回caches.open(' my-cache-name')。然后......

我强烈建议你仔细阅读: https://serviceworke.rs/strategy-network-or-cache.html

在同一个网站上有很多不同的SW策略!