2017-02-06 13 views
4

約200ページのAngular 2アプリケーションを作成します。私はあなたが怠惰な負荷、熱心な負荷、およびプリロードできることを知っています。ユーザーがレイジーに読み込まれたページに移動してからページを出ると、メモリから解放されますか?プリロードされたページはどうですか?ページはあらかじめロードされてから周りに滞在しますか?私の懸案事項は、エンドユーザーがブラウザに余りにも多くのページを移動したり、アプリケーションの初期ロードに時間がかかり過ぎたりすると、メモリが不足することです。Angular 2はどのようにページをアンロードしますか?

+1

私はアンロードが良い質問であることに同意します、そして、私はそれについていくつかの良い答えがあることを願っています。しかし、200ページ?本当にそれが必要ですか?できるだけ頻繁にコンポーネントを再利用し、それらのコンポーネントを含むページを作成することはできませんか?あなたの200ページに関するいくつかの情報を追加してください:) – Maxime

+1

はい。 200ページが本当に必要です。これらのページの200すべてにコンポーネントが共有されます。 200のユニークなページがあります。これは、非常に大規模なアプリケーションで、複数のチームによって2年間にわたって構築されます。 –

+0

あなたのアプリについて非常に興味があります:)オープンソースですか?私はそれを見守ってうれしいだろう。 (誰かがアイデアを持っているかどうかを確認するためにGitterであなたの問題を共有しましたが、明らかに運はありません)。 – Maxime

答えて

5

はい、「ページ」がコンポーネントを意味する場合、それらはリリースされ、GCはクリーンアップできます...あなたがそれを保持するようにしないと仮定すると...長い-lived Observable(例えば、router...またはあなたが書いたサービス)。

ライフサイクルフックOnDestroyをご覧ください。実装ngOnDestroy()。それが呼び出されたことを確認するためにconsole.logを入れてください。それではハンドラを切り離すことができます。」

しかし、もう一度、「ページ」を読み込みません。怠け者ロードモジュール。これらはコードです。コードがロードされると、ブラウザのWebページAFAIKをリロードせずにコードをアンロードする方法はありません。これはブラウザ/ JavaScriptの制限であり、Angularの制限ではありません。それはあなたの心配ですか?

アプリケーションコードだけがクライアントメモリを吹き飛ばしていることは非常にまれです。特に、200ページ程度の小さなアプリケーションの場合は特にそうです。

+0

ご協力いただきありがとうございます。はい、私はモジュールを意味しました。したがってAngular 2はこの場合ASP.NET MVCに似ていますが、サーバー上にあるのではなくモジュール上のモジュールをロードしたりアンロードしたりするクライアント上にあります。 –

関連する問題