2017-12-21 31 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

これが実際の解決策であるかどうかは完全にはわかりません。私はあなたが何をしているのか完全に理解していないと思います。この新しいFetchハンドラはキャッシュから何も返さないが、*常に*ネットワークに行き、レスポンスをキャッシュし、新たにフェッチされたレスポンスを返す。だからキャッシングの面では、これは何もしていないなど、サイトの速度を速くするなど。実際にはサイトが遅くなっています。ブラウザはすぐにではなく、SWに相談した後にのみネットワークに到達します。この実装で欠けているものは、ある種の条件付きロジックです。 – pate

+0

私を助けることができますか? –

関連する問題