2016-07-01 4 views
1

私はモバイルスコアキーピングアプリケーションのService WorkerとSocket.ioを使用しています。スコアはデータベースに格納され、HTMLで表示され、このHTMLはサービスワーカーにキャッシュされます。サービスワーカーで達成したいことですが、スコアが更新されると、更新時に古いスコアが表示されます。Service Worker + Socket.io:新しい訪問時にキャッシュされたページを上書きする

サービスワーカーは、ページを訪問したり更新したりするたびに、最新バージョンのHTMLページをフェッチすることができますか?

フェッチやキャッシングのための私のコード:

this.addEventListener('fetch', function(event) { 
    event.respondWith(
     caches.match(event.request).then(function(response) { 
      if(response) { 
       console.log('found cached response', response); 
       return response; 
      } else { 
       console.log('response not in cache, fetching it'); 
       return fetchAndCache(event); 
      } 
     }) 
    ); 
}); 

function fetchAndCache(event) { 
    return fetch(event.request).then(function(response) { 
     return caches.open('UFA-other-1.0').then(function(cache) { 
      console.log('fetched and caching', event.request); 
      cache.put(event.request, response.clone()); 
      return response; 
     }); 
    }); 
} 

答えて

0

まず最初に:あなたは、Googleからのsw-precacheを使用してそれをすべて自動化することができませんか?

もしそうでなければ、マニュアルライブラリsw-toolboxは便利な戦略を提供するかもしれません。ネットワークファーストや最速のようなさまざまな戦略を選択することができます。詳細ドキュメントhereを参照してください。

あなたの質問に答えてください:サービスワーカーは、一度正しく設定すると、キャッシュするすべてのファイルの最新バージョンをフェッチしますが、次回にページを読み込んだりリロードしたりするまで使用されません。

Mozilla service worker example pageには、ページを再読み込みした後で新しいバージョンのページが利用可能であることを示すメッセージが表示されます。

希望に役立ちます!

関連する問題