2017-10-07 8 views
0

service-workers.js를 오류없이 성공적으로 등록했으며 오프라인으로 작업하는 데 필요한 모든 파일이 cache에 저장되어 있습니다.서비스 작업자가 오프라인으로 작업하지 않음

//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

내 경우의 문제는 내가 "assets/js/user"에 service-worker.js를 넣었을 때 루트 디렉토리로 옮겼을 때 "작동했습니다!"

0

당신이 오프라인에 대한 수용하지 않은 것으로 보인다 : 내가 확인하려고하면 는 그러나, 오프라인, 여기 It fails!

코드 인 경우 200 응답 있을지. 서비스 작업자에게 표시 할 오프라인 페이지로 이동해야합니다. 다음은 코드 스 니펫입니다.

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이지만 테스트하려면 /을 방문하십시오. 그것들은 두 가지 다른 경로이며 방문하고자하는 캐시를 오프라인에서 캐시해야합니다.