it-swarm.com.de

ASP.NET MVC - Langsames Laden

Ich habe vor kurzem eine asp.net mvc-Webanwendung erstellt und online veröffentlicht.

Wenn Sie die Website zum ersten Mal laden, sollten Sie feststellen, dass es 10-15 Sekunden dauert, bis sie tatsächlich angezeigt wird. Nachdem sie jedoch einmal geklickt wurde, wird sie so schnell geladen, wie ich es beim zweiten Mal erwartet habe. Ich frage mich nur, ob jemand eine Idee hat, warum die Website so lange dauert.

35

Normalerweise dauert das Laden einer Anwendung beim Starten der Anwendungsdomäne immer etwas länger.

Dinge, die dazu beitragen, dies zu verschärfen, können von schlecht geschriebenem Code (IE: Application_Start) bis hin zu bestimmten Bibliotheken (beispielsweise ORMs) reichen. Wie viele Module hast du geladen?

Für den Anfang überprüfen Sie Ihre web.config für den berüchtigten <compilation debug="true">. Dies kann erhebliche Auswirkungen auf die Leistung in einer Produktionsumgebung haben. Setze es auf "false"!

Empfehlen Sie das Googeln nach " Verbesserung der Anwendungsstartzeit " und suchen Sie nach Dingen, die sich auf Ihre spezielle Anwendung beziehen können.

Aktualisierung von Ihrem ersten Kommentar:

Wenn die Anwendung nach 30 Minuten erneut gestartet wird (hängt einige Sekunden lang), hängt dies wahrscheinlich mit den Einstellungen für den Anwendungspool-Recycling in IIS zusammen.

Gehen Sie in den IIS Manager (dies setzt v7 + voraus):

  1. Anwendungspools
  2. Klicken Sie mit der rechten Maustaste auf den Pool, der für Ihre Anwendung (en) verwendet wird.
  3. Wählen Sie "Recycling". Ein Fenster mit der Bezeichnung "Recycling Bedingungen" wird angezeigt.
  4. Überprüfen Sie diese Einstellungen, da sie bestimmen, wann automatischIhren App-Pool beenden und neu starten soll.

In Bezug auf die allgemeine Leistung möchten Sie vielleicht Folgendes versuchen:

  1. Fügen Sie einige Debugging-Anweisungen hinzu, die die verstrichene Zeit in Ihrer Application_Start () - Methode oder an einem anderen geeigneten Ort ausspucken, um try abzurufen, um herauszufinden, was am längsten dauert.
  2. Erstellen Sie ein vollständig sauberes Demo-Projekt und stellen Sie es bereit. Sehen Sie, ob es Unter demselben Problem leidet. Wenn nicht versucht wird, mehr Und mehr Ihres echten Codes einzuführen, bis Sie eine Verlangsamung feststellen.

Wenn Siewirklichstumped # 2 sind, ist dies möglicherweise Ihre beste Wette, auch wenn dies wahrscheinlich die langsamste Option ist.

23
Timeout

Ich hatte auch das gleiche Problem, mit langsamen ersten Laden von asp.net-mvc-Sites, schließlich fand ich den besten Weg zum Laden einer Site, extrem schnell beim ersten Laden.

Meine Lösung ist für Windows Server 2008 R2 und IIS 7.5, aber in höheren Windows-Servern und in höheren Versionen von IIS funktionieren auch einige einfache Unterschiede.

Zunächst müssen Sie startMode Ihres Anwendungspools so einstellen, dass er immer ausgeführt wird. Dadurch wird verhindert, dass der Anwendungspool nach einiger Zeit inaktiv wird. (In meinem Fall ändert nur dieser Schritt die erste Belastung meiner Websites von 45 bis 55 Sekunden auf etwa 8 bis 12 Sekunden).

in Schritt 1 gibt es keine erste Anforderung für Ihre Website..... Für das Vorabladen Ihrer Website benötigen wir einen weiteren Schritt, d. h. durch die Installation des Anwendungsinitialisierungsmoduls für iis7.5 von hier

in Schritt zwei müssen Sie preloadEnabled = true für Ihre Website festlegen. Diese Option gibt an, welche Anwendungsinitialisierung den Websiteeinstellungen hinzugefügt wurde.

Weitere Informationen und wie Sie diese Option einstellen können, finden Sie in diesem Blogbeitrag: http://blogs.iis.net/wadeh/application-initialization-part-2

Nach Schritt zwei wird meine Website in nur 1-3 Sekunden geladen.

21
mesut

Zusätzlich zu dem, was Jay gesagt hat .. sollten Sie die Speicherauslastung Ihres App-Pools berücksichtigen. Dies gilt insbesondere für Shared-Hosting-Umgebungen, in denen Ihr Anbieter im Allgemeinen einen App-Pool wiederverwendet, sobald ein Speicherlimit erreicht ist (und nicht zeitbasiert). Dadurch wird Ihre Site erneut "neu gestartet", wodurch ein Problem beim erstmaligen Laden auftritt.

0
Simon Whitehead