2016-10-25 40 views
1

我正在使用以下脚本从服务工作人员获取bootstrap.min.js文件,但在网络范围内,它显示1个请求bootstrap.min.js和其显示的所有其他请求2请求我附上截图,有人可以帮我解决这个问题。服务人员在获取数据时发生问题

var CACHE_VERSION = 8; 

var CURRENT_CACHES = { 
    prefetch: 'prefetch-cache-v' + CACHE_VERSION, 
    font: 'font-cache-v' + CACHE_VERSION 
}; 

//安装服务工人

self.addEventListener('install', function(event) { 
    var now = Date.now(); 

    var urlsToPrefetch = [ 
    '/themes/2.0/fluid/public/responsive/js/bootstrap.min.js' 
    ]; 

    console.log('Handling install event. Resources to prefetch:', urlsToPrefetch); 

    event.waitUntil(
     caches.open(CURRENT_CACHES.prefetch).then(function(cache) { 
      var cachePromises = urlsToPrefetch.map(function(urlToPrefetch) { 
       console.log("comes here23"); 
      var url = new URL(urlToPrefetch, location.href); 
      url.search += (url.search ? '&' : '?') + 'cache-bust=' + now; 

      var request = new Request(url, {mode: 'no-cors'}); 

      return fetch(request).then(function(response) { 
       if (response.status >= 400) { 
       throw new Error('request for ' + urlToPrefetch +' failed with status ' + response.statusText); 
       } 
       // Use the original URL without the cache-busting parameter as the key for cache.put(). 
       return cache.put(urlToPrefetch, response); 
      }).catch(function(error) { 
       console.error('Not caching ' + urlToPrefetch + ' due to ' + error); 
      }); 
      }); 

      return Promise.all(cachePromises).then(function() { 
      console.log('Pre-fetching complete.'); 
      }); 
     }).catch(function(error) { 
     // console.error('Pre-fetching failed:', error); 
     }) 

    ); 
}); 

//取出由服务人员请求

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

    event.respondWith(


    caches.match(event.request).then(function(response) { 
     if (response) { 
     console.log("comes here", event.request); 
     return response; 
     } 
     console.log("no cache exists"); 

     return fetch(event.request).then(function(response) { 
     return response; 
     }).catch(function(error) { 

     throw error; 
     }); 

    }) 

); 
}); 

Network

+1

的可能的复制[Chrome Network DevTools中的“状态代码:200 OK(来自ServiceWorker)”](http://stackoverflow.com/questions/33590378/status-code200-ok-from-serviceworker-in-chrome-network-devtools) –

+0

截图似乎被削减,你可以重新附加它吗? – Salva

回答

1

任何具有上述问题可以使用此代码其可以对某人有帮助

var CACHE_NAME = 'cache-v1'; 

var REQUIRED_FILES = [ 
    '/themes/2.0/fluid/public/responsive/js/bootstrap.min.js' 
]; 

安装

self.addEventListener('install', function(event) { 
    // Perform install step: loading each required file into cache 
    event.waitUntil(
    caches.open(CACHE_NAME) 
     .then(function(cache) { 
     // Add all offline dependencies to the cache 
     return cache.addAll(REQUIRED_FILES); 
     }) 
     .then(function() { 
     // At this point everything has been cached 
     return self.skipWaiting(); 
     }) 
); 
}); 

激活

self.addEventListener('activate', function(event) { 
    // Calling claim() to force a "controllerchange" event on navigator.serviceWorker 
    event.waitUntil(self.clients.claim()); 
}); 

self.addEventListener('fetch', function(event) { 
     const requestURL = new URL(event.request.url); 
    if (/^(\/2.0\/)/.test(requestURL.pathname)) { 
    event.respondWith(
     caches.open(CACHE_NAME) 
     .then(function(cache) { 
      return cache.match(event.request) 
       .then(function(response) { 
        if (response) { 
         return response; 
        } 
        return fetch(event.request); 
       }); 
     }) 
    ); 
    } 
}); 
相关问题