フロントエンドのパフォーマンスの最適化ブラウザを格納しserviceWorker

サービス従事者
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の中に保存されている 
                    } {
                         // プロンプトユーザーを
                    }
                })
            }
        })
})

 

おすすめ

転載: www.cnblogs.com/wzndkj/p/12159459.html