Was alles können wir tun, um eine asp.net-Webanwendung schneller als zuvor zu machen. Was sind die Feinabstimmungen dafür?Tipps zum Erstellen einer asp.net-Webanwendung schneller ausgeführt
Antwort
Um Anwendungen schneller ausführen zu können, müssen Sie zunächst herausfinden, wo sie ihre Zeit verbringen und dann weniger Zeit dort verbringen. Verwenden Sie einen Profiler.
Ein Profiler vereinfacht das Aufbrechen Ihrer Anwendung in kleinere Teile und beschleunigt dann die einzelnen Teile. Sie können das selbst machen, wenn Sie sich keinen Profiler leisten können.
Zum Beispiel sagen Sie Ihre durchschnittliche Reaktionszeit beträgt 4-5 Sekunden. Das ist eine lange Zeit. Was passiert in diesen 5 Sekunden? Warten alle auf die Datenbank? Sie können versuchen, Ihre Abfragen außerhalb der Anwendung auszuführen, um zu sehen, wie lange sie dauern. Sie können SQL Server Profiler ausführen, um Ihre Datenbanktransaktionen während eines bestimmten Zeitraums aufzuzeichnen, und dann das Ergebnis über den Datenbankoptimierungs-Assistenten ausführen. Es kann einige Empfehlungen für Änderungen an den Indizes der Datenbank geben.
Sie können Fiddler verwenden oder die Seitenverfolgung aktivieren, um herauszufinden, ob Ihre Seiten zu groß sind. Die Ablaufverfolgung kann Ihnen sagen, wie lange bestimmte Phasen von Seitenoperationen dauern. Vielleicht dauert es zu lange, um bestimmte Seiten zu rendern.
Auch müssen Sie die Leistung Ihres Servers betrachten. Verwenden Sie zu viel CPU? Zu viel Speicher? Verbringen Sie Ihre Zeit mit Seitenumbruch, indem Sie die Seiten des ASP.NET-Workerprozesses aus dem Speicher holen, um die Seiten von SQL Server einzubringen, nur um diese Seiten auszuschlagen, wenn die Datenbankabfrage abgeschlossen ist und der Arbeitsprozess benötigt wird wieder laufen?
Brechen Sie das Problem in kleinere Stücke, dann fixieren Sie die Teile.
Caching - sowohl Seite als auch Daten - und Optimierung des Datenzugriffs sind wahrscheinlich die Schlüsselelemente zur Verbesserung der Leistung, ohne die Hardware zu ändern. Darüber hinaus können Sie Clustering/Load Balancing betrachten, um mehr Ressourcen verfügbar zu machen.
Leistungsoptimierung für ASP.NET ist ein großes Thema. In der Tat, in dem Versuch, eine umfassende Antwort auf Ihre Frage zu geben, schrieb ich ein Buch darüber: Ultra-Fast ASP.NET: Build Ultra-Fast and Ultra-Scalable web sites with ASP.NET and SQL Server.
Von hohem Niveau:
- Rundfahrten, sowohl zwischen dem Client und dem Server, und zwischen dem Server und DB
- Fokus auf wahrgenommene Leistung
- minimieren blockierende Aufrufe
- Cache minimieren in allen Stufen
- Optimieren Sie die Datenträger-E/A-Verwaltung
- Optimieren Sie die Lade- und Renderreihenfolge des Browserobjekts
- Vermeiden ganze Seite neu geladen mit Ajax, Silverlight und JavaScript
- Vermeiden Synchron DB schreibt
- Verwenden Überwachung und Instrumentierung
- Verstehen Sie, wie SQL Server-Speicher
- Effektive Nutzung von Partitionierungs auf der Datenebene verwaltet
Mein Ansatz ist eher präskriptiv als theoretisch. Sie können sich die Bewertungen auf Amazon ansehen, um mehr darüber zu erfahren, was ich meine.
Hinzugefügt zu meinem Buch Warteschlange. Danke für die Verknüpfung. –
Ich stimme dem Caching zu. ASP.NET verfügt über großartige integrierte Caching-Mechanismen.
Ich würde auch Profiling der Anwendung empfehlen, wie es bereits oben empfohlen wurde.
Hier ist ein Link zu einem Artikel über einige kostenlose .NET Profiler und bezahlte auch.
http://www.devcurry.com/2009/11/free-net-profilers-and-some-paid-ones.html
bearbeiten: Sie möchten vielleicht auch diese Stackoverflow Thread überprüfen
https://stackoverflow.com/questions/308816/any-good-free-net-profiler
Hoffnung, das hilft.
Dies ist ein großes Thema, aber die wichtigsten Dinge, die in den Sinn kommen:
- Ansichtszustand Größe halten
- weniger Postbacks. Verwenden Sie Javascript, um sie zu vermeiden, wenn möglich. Die Validierungskontrollen sind ein gutes Beispiel dafür, wie dies funktionieren kann.
- haben eine gute Caching-Strategie
Es gibt auch nicht-asp.netzspezifische Dinge, wie diese:
- stellen Sie sicher, Ihre Datenbank-Abfragen Sie nicht unten
- minimieren http werden bogging fordert
- halten statische Ressourcen in einem separaten cookieless Domäne
- Profil, bevor Sie verbringen Zeit Optimierung, so dass Sie verschwenden keine Zeit die falsche Sache zu optimieren
Sie auch diese Frage hilfreich finden könnte:
https://stackoverflow.com/questions/72394/what-should-a-developer-know-before-building-a-public-web-site
Welche Art von Anwendung? Haben Sie eine Datenbank? Führen Sie Berechnungen durch? Völlig subjektive Frage .... –
Die Anwendung ist eine asp.net Web-Anwendung mit 82 Webseiten, 34 Berichte (sowohl grafische als auch Text), DB ist SQL Server 2005. Die Antwortzeit für die Seite im Durchschnitt beträgt etwa 4-5 Sekunden . – HotTester
Danke für all eure Antworten und ich schätze all eure Vorschläge ... Ich habe mich für folgende Lösung entschieden: Zuerst habe ich alle Anfragen mit einem Abfrageoptimierungstool optimiert. Zweitens erhöhte ich den Speicher des Servers, auf dem die Anwendung gehostet wurde (zuvor waren es 512 MB RAM ... und jetzt 2 GB). Zuletzt habe ich alle unerwünschten Viewstate entfernt ... -> Das Ergebnis ist sehr schnell und die durchschnittliche Reaktionszeit beträgt jetzt 1-2 Sekunden. Dennoch, wenn jemand noch mehr Punkte hat, um ihn zu teilen, – HotTester