2017-12-21 1 views
0

service-worker에 캐싱에 문제가 있습니다. 기록되고 기록되지 않은 사용자 컨텐츠가 캐시됩니다. 로그인되어 있어도 사용자는 기록되지 않은 사용자 헤더를보고 있습니다.서비스 근로자가있는 캐시 헤더 사용자

importScripts("{% static 'js/cache-polyfill.js' %}"); 
    self.addEventListener('install', function(e) { 
    e.waitUntil(
     caches.open('testv1').then(function(cache) { 
     return cache.addAll([ 
      "/", 
      "{% static 'assets/css/all.css' %}", 
      "{% static 'assets/js/all.js' %}", 
     ]); 

     }) 
    ); 
    }); 
self.addEventListener('fetch', function(event) { 
    event.respondWith(
     caches.match(event.request).then(function(response) { 
     return response || fetch(event.request); 
     }) 
    ); 
    }); 
+0

캐시에서 무엇을 볼 수 있습니까? 두 헤더가 모두 캐시 된 것을 볼 수 있습니까? 고유 키가 있습니까? – Daut

+0

그것의 이상한,하지만 CTRL + SHIFT + R을 할 때 기록 된 헤더를 볼 때 그리고 내가 페이지를 다시로드했을 때, 언로 드 된 헤더. 그러나 나는 이것을 해결하고'fetch' 리스너를 바꾼다. 게시 답변을 추가하겠습니다. –

답변

0

해결책을 찾았습니다. 내 필요에 따라 내 EventListener fetch을 변경해야했습니다. 지속적인 업데이트. (Source)

self.addEventListener('fetch', function(event) { 
    event.respondWith(
    caches.open('mysite-dynamic').then(function(cache) { 
     return fetch(event.request).then(function(response) { 
     cache.put(event.request, response.clone()); 
     return response; 
     }); 
    }) 
); 
}); 
+1

이것이 실제 해결책인지 확실하지 않습니다. 나는 당신이하고있는 일을 완전히 이해하지 못하고 있다고 생각합니다. 이 새로운 가져 오기 처리기는 캐시에서 아무 것도 반환하지 않지만 * 항상 * 네트워크로 이동하여 응답을 캐시하고 새로 가져온 응답을 반환합니다. 따라서 캐싱 측면에서 사이트를 더 빠르게 만드는 등의 작업은 아무 것도하지 않습니다. 실제로 사이트를 느리게 만들고 있습니다. 브라우저는 SW가 아닌 SW에 문의 한 후에 만 ​​네트워크에 도달합니다. 이 구현에서 누락 된 것은 일종의 조건 논리입니다. – pate

+0

도와 주실 수 있습니까? –