2017-10-07 114 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已脫機緩存,但您正在訪問/進行測試。這是兩條不同的路徑,你將不得不離線緩存你想訪問的那個。

相關問題