ServiceWorker
5154 ワード
ServiceWorkerとは
ServiceWorkerライフサイクル取付 がアクティブ化され、アクティブ化に成功すると、 は、要求を傍受し、要求されたリソースがキャッシュされて直接使用された場合、キャッシュの404ページをユーザに示す. 破棄 は、 のみをサポートする.ライフサイクル から独立
一般的にネットを切った後、ページは直接ウェブサイトにアクセスできないというヒントが現れ、
ServiceWorkerのライフサイクルにおける重要なイベント
install
ページのロード時にトリガーされます.このプロセスが完了すると、リソースがキャッシュされます.
fetch に戻る.は、
キーコード解析:
次に、キャッシュリソースとオフライン応答リソースのコードを示します.
詳しくはこちらをクリックしてください
にほうこうつうしん
ブラウザには3つのworkerがあります. dedicated worker:専用worker shared worker:共有worker service worker
特長
Serviceworkerは、XMLHTTPRequestリクエストよりも優れています.はpromiseオブジェクトを返し、コールバックネストを減らします. は、RequestオブジェクトおよびResponseオブジェクトを利用することができ、ユーザの要求に応答するserviceworkerのストレージは非同期であり、localStorageおよびsessionStorageのストレージは同期である.サービスワークの詳細
ServiceWorker
はH5
の新しいAPI
であり、ブラウザのバックグラウンドで実行されるJavaScript
スクリプトであり、現在のページとは独立しているため、Webページと対話することができず、ネットワーク要求をブロックし、処理することができ、キャッシュリソースを実現し、オフラインでユーザーの要求に応答することができる.ServiceWorkerライフサイクル
chrome://inspect/#service-workers
に入って現在のserviceworker
を表示できます.この段階でリソースをキャッシュhttps
プロトコルまたはlocalhost
web
ページ一般的にネットを切った後、ページは直接ウェブサイトにアクセスできないというヒントが現れ、
chrome -> -> New Work -> offline
でネットを切ることをシミュレートすることができます.ServiceWorkerのライフサイクルにおける重要なイベント
install
ページのロード時にトリガーされます.このプロセスが完了すると、リソースがキャッシュされます.
fetch
fetch
は、ユーザの要求をブロックするために使用され、応答してPromise
オブジェクトRequest
およびResponse
オブジェクトを提供し、フロントエンドはRequest
オブジェクトで要求を開始することができ、serviceworker
ではResponse
オブジェクトで要求に応答することができる.キーコード解析:
if ('serviceWorker' in navigator) {//serviceworker navigator
navigator.serviceWorker.register('./service-worker.js').then(function(registration) {// serviceworker,service-worker.js HTML ,serviceworker promise, resolve reject
//resolve,
console.log('ServiceWorker registration successful with scope: ', registration.scope);
}).catch(function(err) {
// reject,
console.log('ServiceWorker registration failed: ', err);
});
}
次に、キャッシュリソースとオフライン応答リソースのコードを示します.
'use strict';
var cacheVersion = 0;
var currentCache = {
offline: 'offline-cache' + cacheVersion
};
const offlineUrl = 'offline.html';
this.addEventListener('install', event => {// serviceworker
event.waitUntil(//caches.open
caches.open(currentCache.offline).then(function(cache) {
return cache.addAll([//
'./offline.svg',
offlineUrl
]);
})
);
});// install ,
this.addEventListener('fetch', event => {
//fetch , , , serviceworker , 200 OK (from ServiceWorker),
if (event.request.mode === 'navigate' || (event.request.method === 'GET' && event.request.headers.get('accept').includes('text/html'))) {
event.respondWith(
fetch(event.request.url).catch(error => {
// Return the offline page
return caches.match(offlineUrl);
})
);
}
else{
event.respondWith(caches.match(event.request)
.then(function (response) {
return response || fetch(event.request);
})
);
}
});
詳しくはこちらをクリックしてください
にほうこうつうしん
ブラウザには3つのworkerがあります.
postmessage
とonmessage
で通信できます特長
Serviceworkerは、XMLHTTPRequestリクエストよりも優れています.