2017-02-06 11 views
4

Wir werden eine Angular 2-Anwendung erstellen, die etwa 200 Seiten haben wird. Ich weiß, dass Sie faul laden, eifrig laden und laden können. Wenn ein Benutzer auf eine Seite zugreift, die faul geladen ist und die Seite dann verlässt, wird sie aus dem Speicher freigegeben? Was ist mit einer vorinstallierten Seite? Bleibt die Seite bestehen, seit sie vorinstalliert war? Meine Sorge ist, dass der Endbenutzer nicht genügend Speicher in seinem Browser hat, wenn sie zu viele Seiten aufrufen oder dass die Anwendung zu lange für die anfängliche Belastung dauert.Wie entlädt Angular 2 die Seiten?

+1

Ich stimme zu, dass das Entladen eine gute Frage ist und ich hoffe, dass es dazu einige gute Antworten geben wird. Aber 200 Seiten? Brauchst du das wirklich? Können Sie nicht einfach Komponenten so oft wie möglich wiederverwenden und einige Seiten mit diesen Komponenten erstellen? Bitte fügen Sie einige Informationen über Ihre 200 Seiten hinzu :) – Maxime

+1

Ja. Die 200 Seiten werden wirklich benötigt. Es wird Komponenten geben, die auf allen 200 dieser Seiten geteilt werden; aber es wird 200 einzigartige Seiten geben. Dies ist für eine sehr große Anwendung, die im Laufe von 2 Jahren von mehreren Teams erstellt wird. –

+0

Sehr neugierig auf Ihre App :) Wird es Open Source sein? Ich würde es gerne im Auge behalten. (Ich habe Ihr Problem in Gitter geteilt, um zu sehen, ob jemand eine Idee hatte, aber anscheinend kein Glück). – Maxime

Antwort

5

Ja, wenn Sie unter "Seiten" Komponenten verstehen, werden diese freigegeben und GC kann aufräumen ... unter der Annahme, dass Sie nichts tun, was dazu führt, dass es anhält ... wie zB ein langes Abonnement -lived Observable (zB router... oder einige Dienste, die Sie geschrieben haben).

Schauen Sie sich den Lebenszyklushaken OnDestroy an. Implementieren Sie ngOnDestroy(). Setzen Sie eine console.log darin, um zu bestätigen, dass es heißt. Das ist, wo Sie Handler loslösen können.

Aber dann wieder Sie nicht faul laden "Seiten". Sie faulen Laden Module. Dies sind Code. Sobald der Code geladen ist, gibt es keine Möglichkeit, diesen Code zu entladen, ohne die Browser-Webseite AFAIK erneut zu laden. Das ist eine Browser-/JavaScript-Einschränkung, keine Winkelbeschränkung. Ist das deine Sorge?

Es ist sehr selten, dass der Anwendungscode allein den Client-Speicher durchbrennt, insbesondere für eine App mit nur 200 Seiten.

+0

Danke für Ihre Hilfe. Ja, ich meinte Module. Es sieht also so aus, als würde Angular 2 in diesem Fall ASP.NET MVC ähnlich sein, aber anstatt es auf dem Server zu haben, befindet es sich auf dem Client, wo Module geladen und entladen werden. –