Progressive web apps 对非缓存URL进行两次服务工作者调用

Progressive web apps 对非缓存URL进行两次服务工作者调用,progressive-web-apps,service-worker,Progressive Web Apps,Service Worker,下面是我的请求列表缓存URL和缓存策略 var CACHE_NAME = 'my-site-mas2'; var urlsToCache = [ '/css/style.css?bust=20.2.5', 'require.js?bust=20.2.5' ]; self.addEventListener('install', function(event) { // Perform install steps event.waitUntil( caches.open(CACH

下面是我的请求列表缓存URL和缓存策略

var CACHE_NAME = 'my-site-mas2';
var urlsToCache = [
  '/css/style.css?bust=20.2.5',
'require.js?bust=20.2.5'
];
self.addEventListener('install', function(event) {
  // Perform install steps
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Opened cache');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        // Cache hit - return response
        if (response) {
          return response;
        }

        return fetch(event.request);
      }
    )
  );
});

self.addEventListener('activate', function(event) {

  var cacheWhitelist = ['my-site-mas2'];

  event.waitUntil(
    caches.keys().then(function(cacheNames) {
      return Promise.all(
        cacheNames.map(function(cacheName) {
          if (cacheWhitelist.indexOf(cacheName) === -1) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});
缓存请求
'require.js?bust=20.2.5'
调用在网络中发生一次,
'publish'
发生两次,下载时间为两次。如何仅对非缓存URL进行一次调用


这就是Chrome开发工具显示请求和预期结果的方式


客户端向服务工作者请求资源,服务工作者向服务器请求资源。除非服务人员缓存了响应,并且不需要检查服务器是否有更新,否则这种情况总是会发生。

这就是Chrome DevTools显示请求和预期的方式


客户端向服务工作者请求资源,服务工作者向服务器请求资源。除非服务人员缓存了响应,并且不需要检查服务器是否有更新,否则这种情况总是会发生。

您不应该首先使用
缓存打开缓存。打开
我没有缓存所有资产。只有少数被缓存。对于缓存的资产,响应来自缓存。但是对于网络选项卡2中的非缓存URL,调用正在发生,例如在Publish的屏幕截图中,您不应该首先使用
缓存打开缓存。打开
我没有缓存所有资产。只有少数被缓存。对于缓存的资产,响应来自缓存。但是对于网络选项卡2中的非缓存URL,正在为发布屏幕截图中的eg调用