ServiceWorker を使用して一部のアセットをキャッシュしています。すべてのファイルが正常にキャッシュされたらユーザーに知らせたいので、オフラインでコンテンツにアクセスできることをユーザーに認識させます。これを行う適切なタイミングはいつですか?
私はconsole.log()
物事の流れを理解するためにいくつか持っています。ServiceWorker を登録する瞬間は次のとおりです。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/serviceWorker.js')
.then(function(registration) {
console.log('* ServiceWorker registration successful');
})
.catch(function(err) {
console.log('* ServiceWorker registration failed: ', err);
});
}
ServiceWorker 内では次のようになります。
self.addEventListener('install', function(event) {
console.log('* Installing Service Worker...');
event.waitUntil(
caches.open(cacheName).then(function(cache) {
console.log('* Opened cache');
return cache.addAll(filesToCache).then(function () {
console.log('* Files have been cached!');
});
})
);
});
コンソールには次のように表示されます。
* Installing Service Worker...
* Opened cache
* ServiceWorker registration successful
* Files have been cached!
したがって、この通知をトリガーする正しい瞬間は の後.addAll()
であると考えているので、現在「ファイルがキャッシュされました!」と吐き出していますか? で実行すると便利ですがregister()
、3 番目と最後のログ メッセージの間に遅延があるようです。その場合、ServiceWorker の内部にいるため、postMessage()
この情報をクライアントに送信するのが最善の方法でしょうか?
ありがとう!