ServiceWorkerGlobalScope は ServiceWorker API のインターフェイスで、サービスワーカーのグローバル実行コンテキストを表します。
開発者は ServiceWorker の状態が停止/再起動サイクルをまたいで続かないことを心にとめておいてください。このため各イベントハンドラーは、むき出しの、デフォルトのグローバル状態で実行されることを想定すべきです。
いったん正しく登録されたら、サービスワーカーはメモリーとプロセッサーの力を温存するため、アイドル時であれば停止させることができます。アクティブなサービスワーカーはイベント、例えば ServiceWorkerGlobalScope.onfetch や ServiceWorkerGlobalScope.onmessage に応じて自動的に再起動します。
加えて、同期リクエストはサービスワーカーでは許可されていません ― 非同期リクエスト、つまり fetch() メソッド経由で初期化されたものが使われます。
このインターフェイスは WorkerGlobalScope インターフェイスと、その親の EventTarget を継承し、このため WindowTimers、WindowBase64、WindowEventHandlers のプロパティを実装しています。
ServiceWorkerGlobalScope は WorkerGlobalScope を実装します ― これは GlobalFetch を実装します。このため利用できる次のプロパティも持っています:
ServiceWorkerGlobalScope.onactivate プロパティからも利用できます。
ServiceWorkerGlobalScope.onfetch プロパティからも利用できます。
ServiceWorkerGlobalScope.oninstall プロパティからも利用できます。
ServiceWorkerGlobalScope.onmessage プロパティからも利用できます。
ServiceWorkerGlobalScope.onnotificationclick プロパティからも利用できます。
ServiceWorkerGlobalScope.onnotificationclose プロパティからも利用できます。
ServiceWorkerGlobalScope.onpush プロパティからも利用できます。
ServiceWorkerGlobalScope.onpushsubscriptionchange プロパティからも利用できます。
ServiceWorkerGlobalScope.onsync プロパティからも利用できます。
さらに、このコードは fetch() 演算から投げられた例外をハンドリングします。HTTP のエラーレスポンス(たとえば、404)は、例外を引き起こさないことにご注意ください。適切なエラーコードセットを持った通常のレスポンス オブジェクトを返します。
self.addEventListener('fetch', function(event) {
console.log('Handling fetch event for', event.request.url);
event.respondWith(
caches.match(event.request).then(function(response) {
if (response) {
console.log('Found response in cache:', response);
return response;
}
console.log('No response found in cache. About to fetch from network...');
return fetch(event.request).then(function(response) {
console.log('Response from network is:', response);
return response;
}, function(error) {
console.error('Fetching failed:', error);
throw error;
});
})
);
});
| 表示内容: |
| 表示内容: |