2017-12-30 35 views
0

私はオフラインでも動作するはずのWebアプリケーションを持っています。 これはjavascriptサービスワーカーを使用して、必要なファイルをキャッシュに入れます。 接続が確立している場合は、ネットワークからすべてのリソースをロードします。 接続がない場合、リソースはキャッシュからロードされます。 これは問題なく動作しています。Javascriptサービスワーカーがネットワークタイムアウト後にキャッシュを使用する

ここで問題は、デバイスにインターネット接続があり、サーバーがダウンしている場合です。 それはインターネットに接続しているので、決してキャッシュに戻ることはありません。ここで

は、サービスworker.jsでフェッチイベントのために私のコードです:

self.addEventListener('fetch', function(event) { 
    event.respondWith(
     fetch(event.request).catch(function() { 
      return caches.match(event.request); 
     }) 
    ); 
}); 

私の考えは、アプリケーションが取得するカント場合におけるコンテンツは、その後30秒を言うことができます、タイムアウトの並べ替えを実装することです常にキャッシュを使用してください。 これを実装する方法を知っている人はいますか?私は約束に合っていません...

答えて

1

あなたの問題は、あなたがキャッシュのインスタンスを開き、そのキャッシュに対して要求を照合していないことです。あなたは間違ってキャッシュAPIを使用しています。

次のようなものが必要です。私は非常にあなたがこれを読んですることをお勧め

リターンcaches.open( '私のキャッシュ名')そして...

を:。 https://serviceworke.rs/strategy-network-or-cache.html

同じサイトに多くの異なるSW戦略があります!

+0

リンクのthx!これは有望だと思う、私は来年にそれをテストする;) – Alphacoder

関連する問題