このように、Angular 2アプリケーションを使用してブラウザウィンドウを開いたままのクライアントがいくつかあります。次に、--prodをビルドして、新しいビルドをサーバーに公開します。Angular2アプリケーションを新規にデプロイした後にブラウザをリフレッシュする方法
クライアントにすべてのキャッシュされたスクリプトを強制的に更新させるにはどうすればよいですか?
このように、Angular 2アプリケーションを使用してブラウザウィンドウを開いたままのクライアントがいくつかあります。次に、--prodをビルドして、新しいビルドをサーバーに公開します。Angular2アプリケーションを新規にデプロイした後にブラウザをリフレッシュする方法
クライアントにすべてのキャッシュされたスクリプトを強制的に更新させるにはどうすればよいですか?
この問題の解決策の実装が完了しました。
私はいくつかのアプローチを試しましたが、アプリケーションが設定された間隔で要求して現在ロードされているバージョンと比較してそれに応じて動作できる別のjsonファイルを維持してしまいました。
私はまた、Googleといくつかの他のものによってsw-precacheで遊んでいました。私は問題をなくすことを望んでいました。 SW-Precacheこれは素晴らしいですが、問題のキャッシュを無効にするための定期的なチェックをスケジュールする方法を見つけることができなかったので、私たちの問題をかなり確実に解決しません。
Gotcha番号1: 新しいファイルをangular-cli.jsonのassetsブロックに追加して、ビルドされたjsファイルには含まれないようにします。私たちがやろうとしていること。
"assets": [
"assets",
"favicon.ico",
"web.config",
"version.json"
],
は、その後、私は単純に、このファイルを要求する機能を備えたシンプルなサービスを作成し、設定するために、別のとの間隔は、要求を繰り返し呼び出すこと。また、クエリパラメータとしてUNIXのタイムスタンプを含めることで、これらの要求に「ハード」なキャッシュを使用することを選択しました。これは古い学校かもしれませんが、これが設定されている場所や場所に関係なく、キャッシュされたバージョンのversion.jsonファイルを取得することはありません。
最後に、このversion.jsonファイルをアプリケーションのバージョン番号でインラインに保つ方法をお勧めします。クイック検索は、NPMの後にインストール
はセマンティックバージョン番号に非常に簡単な変更を可能に私をもたらしました。私はpackage.jsonにいくつかのスクリプトを追加して、version.jsonがpackage.jsonと一直線になっていることを確認しました。ビルドする前に、コードは変更されているがバージョンはないのでヒックアップがないことを確認してください。
これは、アプリが実行されていなくても問題があると判断し、後でユーザーのブラウザをアプリの起動ページに開いたときに発生します。ブラウザは単にキャッシュされたバージョンのページを表示し、キャッシュされたバージョンのすべてのスクリプトを使用します。 –