服务人员网络优先,具有缓存更新和后备功能

时间:2019-12-10 21:42:46

标签: javascript caching service-worker

我是新来的服务工作者和诺言。我希望始终从服务器获取一些资产,如果成功,则更新缓存,如果脱机则仅回退到缓存。我正在尝试找出实现它的正确方法。我有两种可能的解决方案:

1) event.respondWith(
    caches.open(CACHE_NAME)
        .then(function(cache) {
            return cache.match(request)
                .then(function(response) {
                    var fetchPromise = fetch(request).then(function(networkResponse) {
                        cache.put(request, networkResponse.clone());
                        return networkResponse;
                    })
                    return fetchPromise || response;
                })
        })  


2) event.respondWith(
    fetch(event.request)
      .then(function(responce) {
        return caches.open(CACHE_NAME)
          .then(function(cache) {
            cache.put(event.request.url, responce.clone());
            return responce;
          })
      })
      .catch(function(err) {
          return caches.match(event.request);
      })
  );

正确的方法是什么?我是否需要使用.catch()来查看获取是否失败,或者第一个示例可以工作?

0 个答案:

没有答案