【问题标题】:Service Worker doesn't get data from cacheService Worker 没有从缓存中获取数据
【发布时间】:2023-04-03 11:10:01
【问题描述】:

任务:先离线; 我有一些页面(以?ind${number}.html 结尾,这些页面没有缓存。我通过将第二个参数传递给caches.match(event.request.url)) 来解决这个问题

let CACHE = 'network-or-cache-v1';

self.addEventListener('install', function(event){
  let offlinePage = new Request('/index.html');
  self.skipWaiting();
  event.waitUntil(
    caches
        .open(CACHE)
        .then((cache) => cache.addAll(arrayToCache))
  );
});

self.addEventListener('fetch', function(event){
  const url = new URL(event.request.url);
  console.log(url);
  caches.match(event.request.url, {ignoreSearch: true}).then(function(response) {
    return response || fetch(event.request);
  })
  event.waitUntil(update(event.request));
});

【问题讨论】:

    标签: caching browser-cache service-worker


    【解决方案1】:

    您可以尝试创建一个新的请求对象,然后将其传递给 caches.match 之类的

     const requestNew = new Request(event.request, {ignoreSearch: 'true' });
     caches.match(requestNew).then(///)
    

    【讨论】:

    • 此外,如果缓存未命中,您正在从网络获取,然后您可能在更新时再次获取。您可以在从网络获取时添加到缓存中,并且仅在您从缓存响应时更新以保存网络行程并为用户保存数据。 @natalia-aga
    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    相关资源
    最近更新 更多