2017-10-07 87 views
0

我已经成功注册了service-workers.js,没有错误,并且它具有存储在cache中的脱机工作所需的所有文件。 然而,当我尝试检查它是否会响应200下线时, It fails!服务人员不能离线工作

下面是代码:

//Delete Old Cache 
caches.delete('[v0.1.0]'); 

//Latest CACHE_NAME 
var CACHE_NAME = '[v0.1.1] Portfolio (ATB00ker)'; 

//Files to be Cached 
var urlsToCache = [ 
    '../../../index.html', 
    '../jquery-3.2.1.slim.min.js', 
    '../owl.carousel.min.js', 
    '../scrollreveal.min.js', 
    '../../images/bg-creator.webp', 
    '../../images/icon/facebook.svg', 
    '../../images/icon/telegram.svg', 
    '../../images/icon/gmail.svg', 
    '../../images/icon/github.webp' 
]; 


self.addEventListener('install', function(event) { 
    // Perform install steps 
    event.waitUntil(
    caches.open(CACHE_NAME) 
     .then(function(cache) { 
     return cache.addAll(urlsToCache); 
     }) 
); 
}); 


self.addEventListener('fetch', event => { 
    event.respondWith(
    caches.match(event.request, {ignoreSearch:true}).then(response => { 
     return response || fetch(event.request); 
    }) 
); 
}); 
+0

您是否也按照说明[在网站上注册服务人员](https://developers.google.com/web/fundamentals/codelabs/offline/#register_a_service_worker_on_the_site)将离线支持添加回应用程序? – noogui

回答

0

在我的情况下,问题是我把service-worker.js放在“assets/js/user”中,当我将它移动到根目录“/”时它工作!

0

看来你没有满足脱机。您必须将服务工作人员指向要显示的离线页面。以下是一段代码:

self.addEventListener('fetch', function (event) { 
    console.log('Handling fetch event for', event.request.url); 

    event.respondWith(   
     caches.match(event.request).then(function (response) { 
      if (response) { 
       console.log('Found response in cache:', response); 

       return response; 
      } 

      console.log('No response found in cache. About to fetch from network...'); 

      return fetch(event.request).then(function (response) { 
       console.log('Response from network is:', response); 

       return response; 
      }).catch(function (error) {      
       console.error('Fetching failed:', error); 

       return caches.match(OFFLINE_URL); 
      }); 
     }) 
    ); 
}); 

或者,您可以看看this

2

您有/index.html已脱机缓存,但您正在访问/进行测试。这是两条不同的路径,你将不得不离线缓存你想访问的那个。

相关问题