2017-12-13 29 views
2

を開始します。私のホームページのngOnInit機能で角度サービス労働者は、私はこれは私のngsw-config.jsonファイルである内部サービスワーカー で角度5.1を使用遅すぎる

{ 
    "appData": "Angular 5.1", 
    "index": "/index.html", 
    "assetGroups": [ 
    { 
     "name": "app", 
     "installMode": "prefetch", 
     "resources": { 
     "files": ["/favicon.ico", "/index.html"], 
     "versionedFiles": ["/*.bundle.css", "/*.bundle.js", "/*.chunk.js"] 
     } 
    }, 
    { 
     "name": "assets", 
     "installMode": "prefetch", 
     "updateMode": "prefetch", 
     "resources": { 
     "files": ["/assets/**"] 
     } 
    } 
    ], 
    "dataGroups": [ 
    { 
     "name": "tasks-users-api", 
     "urls": ["/api"], 
     "cacheConfig": { 
     "strategy": "freshness", 
     "maxSize": 20, 
     "maxAge": "1h", 
     "timeout": "5s" 
     } 
    } 
    ] 
} 

、私が記載されている/ APIのURLを呼び出しますデータグループ内。私がコンソールを開くと、サービスワーカーの開始前にこのURLがコール(下に赤枠で表示)されていることがわかります(サービスワーカーの開始が、下の青枠で囲まれた要素と一致していると思います)。

dev console screen

私は私のインターネット接続をオフに切り替えるのであれば、/ APIコールは、サービス従事者扱いされていません。 接続をオフにする前に別のページをナビゲートしてホームページに戻ると、/ apiコールはサービスワーカーによって処理されます。

これは問題ですか?ケースを扱うには?

答えて

1

これが本当であるANこれはバグではより多くの機能です。 Service Workerの設計目標の1つは、非常に柔軟性が高いことです。そのため、いつSWをインストールするのか、インストールするには何が必要なのかを自由に決めることができます。

インストールは、スクリプトが最初に行うものとして理論的に呼び出され、インストールが完了するまでブロックされる可能性があります。しかし、インストール段階が任意に長くなる可能性があるので(インターネットの半分をあらかじめキャッシュすることを試みる可能性があります)、これは非常に実用的ではありません。

私は角度の実装の詳細を知らないが、一般的には、ページが完全にロードされた後にのみSW登録を呼び出すことです。したがって、最初の負荷(またはSWがインストールされ、起動されるまでのフェーズ)はSWによって処理されないことが予想されます。

このケースの処理方法は?本当に何も処理することはありません。あなたが最初のロードであなたの接続を失った場合、それは関係なく、担当していた人の失われました。どちらのユーザーは、データを直接読み込むことができませんでしたか、あなたのSWは、データをキャッシュすることができませんでした - 両方のケースであなたは基本的に奉仕するために何かを持っていません。

関連する問題