我是新来的服务工作者和诺言。我希望始终从服务器获取一些资产,如果成功,则更新缓存,如果脱机则仅回退到缓存。我正在尝试找出实现它的正确方法。我有两种可能的解决方案:
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()来查看获取是否失败,或者第一个示例可以工作?