【问题标题】:Javascript Service Worker use cache after network timeoutJavascript Service Worker 在网络超时后使用缓存
【发布时间】:2017-12-30 21:38:22
【问题描述】:

我有一个 web 应用程序也应该可以离线工作。 为此,我使用 javascript 服务人员将必要的文件放入缓存中。 如果连接正常,它会从网络加载所有资源。 如果没有连接,则从缓存中加载资源。 这工作正常。

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

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

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

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

【问题讨论】:

    标签: javascript caching service-worker offline-caching


    【解决方案1】:

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

    你需要这样的东西:

    return caches.open('my-cache-name').then...

    我强烈建议您阅读以下内容: https://serviceworke.rs/strategy-network-or-cache.html

    同一个站点有很多不同的软件策略!

    【讨论】:

    • 感谢链接!这听起来很有希望,我会在明年测试它;)
    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多