サービス従事者
JSは、シングルスレッドであるため、状況は非常に遅いページのレンダリングにつながるレンダリングするデータと計算の前部には、ブロックされたならば、多くの小さいがあります。JSは、ページのレンダリングを詰まらせますので。サービス労働者とバックには道、大規模な操作はありません。例えば、この3Dレンダリング、3Dしかし、大きな問題があるとは、あること、3Dモデルは、3Dデータが非常に大きいのWebGL。いくつかのM上のデータ、この場合は、メインスレッドで再突入ワーカーサービス労働者でレンダリングすることができます。
サービス労働者は、ページまたはユーザーとの対話がドアを開いている機能に依存しない、それらを実現するために、バックグラウンドで実行され、スクリプト、現在のページのブラウザは無関係です。将来的にはこれらの機能は、プッシュ情報、背景バックグラウンド同期、ジオフェンシング(アドレス位置決めフェンス)が含まれますが、それは、対応するキャッシュを管理するプログラムで含めて、最初の主な特徴は、傍受やハンドルネットワーク要求する機能です打ち上げ。これは、オフラインアプリケーションです。
2つのアプリケーションサービスワーカー
1、及びインターセプト処理ネットワーク要求する能力の使用、達成する
オフラインアプリケーション
2、サービスワーカーが
同時に通信することができ、背景ページで実行する能力
大規模なバックグラウンドデータを達成するために、処理
WEIGHT
プログレッシブWebアプリケーションWebアプリケーションは、新しいモデルでは、具体的にこれは進歩的なWebアプリケーションで、我々は、ビューの頭文字を見ることができ、最先端の技術や知識の1つのポイントの特定の種類を参照してい、それがあります優れたUIのインタラクションデザイン、徐々に強化されたWeb Appユーザーの経験を持つ新しいWeb機能のシリーズを通して。
いわゆるプログレッシブが弱いネットワークの場合の携帯電話で、ページがロードすることはできません。オフラインの場合、あなたの携帯電話ならば、あなたのアプリがそれをロードすることはできません。
今3時00分の方向についてPWA
1は、信頼性:なしネットワーク環境でも基本的なページへのアクセスを提供することはできない、とされませんページ「は、インターネットに接続されていません」です。このWebアプリの前にアンドリュースに劣っています
図2に示すように、迅速に:より良いページのレンダリングとデータネットワークアクセスのためにそこに最適化されています。例えば、過度のAndroidアプリのページが良いレンダリングを持っている場合、Webアプリケーションもサポート
3、統合、アプリケーションは、携帯電話のデスクトップに加え、一般的なアプリケーションのフルスクリーンがあるので、その他の特性をプッシュすることができます。また、前方に置くネイティブアプリと比較されます。
1、オフラインアプリケーション、サービスワーカーは、HTTPSのみを使用することができます
serviceWorker.html
<!DOCTYPE HTML > < HTML LANG = "EN" > < 頭> < リンクのrel = "スタイルシート" のhref = "./のmain.css" > </ ヘッド> < 身体> < divのクラス= "コンテナ" >サービスワーカー</ divの> < スクリプトSRC = "./ app.js" > </ スクリプト> </ ボディ> </ HTML >
あるmain.css
.container { 色:赤。 }
app.js
// 注册serviceWorker 場合(navigator.serviceWorker){ navigator.serviceWorker.register(」./service-worker.js' 、{ 範囲: './' // スコープ })を(関数(REG){ console.log(REG)。 })。キャッチ(関数(E){ console.log(E); }) } 他{ 警告(「サービス労働者がサポートされていません。」) }
サービスworker.js
// serviceWorkerイベントインストール聞く self.addEventListener(「インストール」、機能(E){ //は、その後の実行に成功した後、約束のオブジェクトを受け入れますが返されます e.waitUntil( // キャッシュがCacheStorageの開くことです caches.openを( 'のApp-V1')。次に、(関数(キャッシュ){ console.log( 'オープンキャッシュ' ); リターンcache.addAll([ './app.js' 、 ' ./main.css' 、 './serviceWorker.html' ]) }) ) }) self.addEventListener( 'FETCH'、機能(イベント){ // 読み込みキャッシュ event.respondWith( caches.match(event.request).then(関数(RES){ 場合(RES){ 戻りRES。 } 他{ // フェッチ方法によって開始され、ネットワークへの要求を フェッチ(URL).then(関数(){ IF (RES){ // リソースのための新たな要求が私たちのCacheStorageの中に保存されている } 他{ // プロンプトユーザーを } }) } }) ) })