Heim >Backend-Entwicklung >C#.Net-Tutorial >Methoden und Techniken zur Verbesserung der Leistung von asp.net-Webanwendungen
In diesem Artikel stellen wir einige Methoden und Techniken vor, um die Leistung von ASP.NET-Webanwendungen zu verbessern. Wir alle wissen, dass das Lösen von Leistungsproblemen eine mühsame Aufgabe ist, und wenn Leistungsprobleme auftreten, gibt jeder den Entwicklern die Schuld, die den Code geschrieben haben.
Das Folgende ist die Übersetzung
Wie kann das Leistungsproblem gelöst werden? Im Folgenden sind die Punkte aufgeführt, die .NET-Entwickler vor der Veröffentlichung des Anwendungssystems überprüfen müssen.
1.debug="false"
Beim Erstellen einer ASP.NET-Webanwendung ist die Standardeinstellung „true“. Während der Entwicklung ist es sehr nützlich, den Wert auf „true“ zu setzen. Wenn die Anwendung jedoch freigegeben und bereitgestellt wird, muss er auf „false“ gesetzt werden.
<compilation defaultLanguage="C#" debug="false" targetFramework="4.0" />
2. Deaktivieren Sie die Ablaufverfolgung
Die Ablaufverfolgung ist sehr beängstigend. Haben Sie jemals vergessen, sie auszuschalten? Wenn es nicht funktioniert, stellen Sie sicher, dass Sie web.config bearbeiten und schließen. Es wird viele Ressourcen Ihres Programms in Anspruch nehmen.
<trace enabled="false" requestLimit=”10” pageoutput=”false” traceMode=”SortByTime” localOnly=”true”>
3. Sitzung deaktivieren
Wenn Sie die Sitzungsverfolgung nicht benötigen, deaktivieren Sie sie bitte unbedingt. Sie können auf jeder asp.net-Seite Folgendes festlegen:
<%@ page language="c#" codebehind="webform1.aspx.cs" autoeventwireup="false" inherits="webapplication1.webform1" enablesessionstate="false" %>
4. Verwenden Sie die Release-Version, um die Anwendung bereitzustellen.
Achten Sie beim Bereitstellen der Anwendung in der Produktionsumgebung darauf, dass Sie Folgendes verwenden: der Release-Versionsmodus anstelle des Debug-Modus. Wenn Sie Debug-Vorlagen verwenden, kann es sehr leicht zu einer Zeitüberschreitung bei der Anforderung kommen. Wenn Sie eine Release-Version bereitstellen, werden Sie eine enorme Geschwindigkeitsverbesserung feststellen.
5. Schließen Sie den Ansichtsstatus der Seite
Der Ansichtsstatus wird hauptsächlich zum Echo nach der Übermittlung verwendet. Er ist nur nützlich, wenn die Daten auf der Seite an diese Seite übermittelt werden. Der Standardwert ist „true“. Wenn Sie kein Formulardaten-Postback verwenden, können Sie „Status anzeigen“ deaktivieren.
<%@ Page EnableViewState="false" %>
6. Vermeiden Sie die Verwendung von Response.Redirect
Die Umleitung wird nur für Entwicklungssprünge vom aktuellen physischen Server verwendet. Wenn Sie Seiten nur innerhalb der Entwicklung dieses Servers umleiten, verwenden Sie bitte die Server.Transfer-Syntax, um viele unnötige Client-Umleitungen zu reduzieren.
7. Verwenden Sie die StringBuilder-Klasse und die ToString()-Methode
Das String-Klassenobjekt ist unveränderlich. Bei der Neuzuweisung des String-Objekts wird im Wesentlichen ein String-Objekt neu erstellt und durch das ersetzt new one Der Wert wird dem Objekt zugewiesen und seine Methode ToString verbessert die Leistung nicht wesentlich. Wenn Sie mit Zeichenfolgen arbeiten, verwenden Sie am besten die StringBuilder-Klasse, deren .NET-Namespace System.Text ist. Diese Klasse erstellt keine neuen Objekte, sondern bearbeitet Zeichenfolgen direkt über Methoden wie Append, Remove und Insert und gibt die Operationsergebnisse über die ToString-Methode zurück. Seine Definitions- und Operationsanweisungen lauten wie folgt
int num; System.Text.StringBuilder str = new System.Text.StringBuilder(); //创建字符串 str.Append(num.ToString()); //添加数值num Response.Write(str.ToString); //显示操作结果
8. Vermeiden Sie das Auslösen von Ausnahmen
Ausnahmen verlangsamen die Geschwindigkeit und führen dazu, dass die Anwendungsseite abnormal angezeigt wird, sodass keine anderen Vorgänge ausgeführt werden können . Mit try/catch können Sie Ausnahmen in der Protokolldatei protokollieren.
9. Verwenden Sie die Methode „finally“, um Ressourcen zu recyceln.
Wenn Sie während der Anwendungsentwicklung eine große Anzahl anderer Datenbankverbindungen verwenden und auf Dateien zugreifen, achten Sie bitte darauf, diese nach der Verwendung zu schließen. Der finale Block ist der letzte, der im Programm ausgeführt wird, daher wird garantiert, dass der darin enthaltene Code ausgeführt wird. Der Abschlusscode muss in diesem Entwicklungsmethodenblock ausgeführt werden.
10. Verwenden Sie die clientseitige Skriptüberprüfung.
Verwenden Sie die clientseitige Überprüfung anstelle der serverseitigen Überprüfung auf der Entwicklungsseite. Die Datenvalidierung auf der Serverentwicklungsseite verbraucht einen Großteil Ihrer Serverentwicklungsressourcen und erfordert die Rückgabe einer großen Menge an Seitendaten.
11. Verwenden Sie Page.IsPostback
Bitte achten Sie darauf, nicht zu viele Postback-Codes auszuführen. Verwenden Sie die Page.IsPostBack-Eigenschaft, um sicherzustellen, dass beim ersten Laden einer Seite nur die Seiteninitialisierungslogik ausgeführt wird und keine Antwort an den Client zurückgesendet wird.
12. Paging verwenden
Die meisten Webanwendungsdaten werden in Tabellenform angezeigt. Die Paginierung nutzt die Effizienz der Anwendungsentwicklung. Versuchen Sie, jeweils einen kleinen Teil der Daten anzuzeigen, um die Seitenanzeige zu beschleunigen.
13. Verwenden Sie Ajax, um asynchrone Aufrufe durchzuführen.
Verwenden Sie Ajax-Methoden, um asynchrone Aufrufe durchzuführen.
14. Nicht verwendete HttpModules löschen
Für httpModules können wir es so verstehen: Einrichten eines universellen HttpApplication-Ereignis-Hooks, der in jede Webanwendung eingefügt werden kann. Die Verwendung von HttpModule ist wiederverwendbar und erfordert keinen anwendungsspezifischen Code, sondern lediglich einen Eintrag in web.config. Löschen Sie in der Datei web.config nicht verwendete HttpModules.
15. Vermeiden Sie rekursive Funktionen/verschachtelte Schleifen
Verschachtelte Schleifen und rekursive Funktionen müssen in jeder Programmiersprache vermieden werden, um die Leistung zu verbessern.
16. Verwenden Sie keine unnötige Serversteuerung
In ASP.NET erleichtert eine große Anzahl serverseitiger Steuerungen die Programmentwicklung, kann aber auch zu Leistungseinbußen führen, da jedes Mal, wenn der Benutzer betreibt serverseitige Kontrollen und generiert einen Roundtrip-Prozess mit dem Server. Daher sollte Server Control weniger als nötig verwendet werden.
17. Wenn Sie mehrere Vorgänge aufrufen, verwenden Sie bitte Multithreading
Wenn das Problem auftritt, bleibt ein einzelner Thread bei diesem Problem längere Zeit hängen. Daher können mehrere Threads verwendet werden, um die Reaktionsfähigkeit der Anwendung zu erhöhen.
18. Datenbankverbindung und -schließen
Der Zugriff auf Datenbankressourcen erfordert mehrere Vorgänge: Erstellen einer Verbindung, Öffnen einer Verbindung und Schließen einer Verbindung. Diese Prozesse erfordern einen mehrfachen Informationsaustausch mit der Datenbank, um die Authentifizierung zu bestehen, was Serverressourcen verbraucht. ASP.NET stellt einen Verbindungspool (Verbindungspool) bereit, um die Leistungsauswirkungen beim Öffnen und Schließen der Datenbank zu verbessern. Das System stellt die Datenbankverbindung des Benutzers in den Verbindungspool, entfernt sie bei Bedarf und stellt die Verbindung wieder her, wenn sie geschlossen wird, und wartet auf die nächste Verbindungsanforderung. Die Größe des Verbindungspools ist begrenzt. Wenn Sie weiterhin eine Verbindung erstellen müssen, nachdem der Verbindungspool die maximale Grenze erreicht hat, wird die Leistung stark beeinträchtigt. Öffnen Sie daher nach dem Herstellen einer Datenbankverbindung die Verbindung nur dann, wenn Vorgänge wirklich erforderlich sind, und schließen Sie sie sofort nach der Verwendung. Dadurch wird die Zeit, in der die Datenbankverbindung geöffnet ist, minimiert und eine Überschreitung des Verbindungslimits vermieden.
19. Verwenden Sie die SqlDataReader-Klasse für Nur-Schnellvorlauf-Datencursor
Die SqlDataReader-Klasse bietet eine Möglichkeit, einen reinen Feed-Datenstrom zu lesen, der aus einer SQL Server-Datenbank abgerufen wird. Die SqlDataReader-Klasse bietet eine höhere Leistung als die DataSet-Klasse, wenn Umstände eintreten, die es Ihnen ermöglichen, sie beim Erstellen einer ASP.NET-Anwendung zu verwenden. Dies ist der Fall, weil SqlDataReader Daten mithilfe des nativen Netzwerkdatenübertragungsformats von SQL Server direkt aus der Datenbankverbindung liest. Darüber hinaus implementiert die SqlDataReader-Klasse die IEnumerable-Schnittstelle, die es Ihnen auch ermöglicht, Daten an Serversteuerelemente zu binden. Weitere Informationen finden Sie in der SqlDataReader-Klasse. Informationen darüber, wie ASP.NET auf Daten zugreift, finden Sie unter Zugreifen auf Daten mit ASP.NET.
20. Hochleistungs-SQL-Anweisungsregeln
Versuchen Sie, vollständige Tabellenscans zu vermeiden.
Versuchen Sie, Nullwerturteile für Felder in der Where-Klausel zu vermeiden.
Vermeiden Sie die Verwendung von !=- oder -Operatoren in where-Klauseln
Vermeiden Sie die Verwendung von or in where-Klauseln, um Bedingungen zu verbinden
in und not in sollten ebenfalls mit Vorsicht verwendet werden
Führen Sie keine Funktionen, arithmetischen Operationen oder andere Ausdrucksoperationen auf der linken Seite von „=" in der where-Klausel aus.
Update-Anweisung: Wenn Sie nur 1 oder 2 Felder ändern, aktualisieren Sie nicht alle Felder
Für den JOIN mehrerer Tabellen mit großen Datenmengen (einige hundert Datensätze gelten hier als groß) ist es notwendig, zuerst zu paginieren und dann zu verknüpfen, da sonst der logische Lesevorgang und die Leistung sehr hoch sind schlecht
Verwenden Sie varchar/so oft wie möglich. nvarchar ersetzt char/nchar
21. Caching
Caching ist eine Technologie, die Raum gegen Zeit tauscht Speichern der Daten, die Sie erhalten, für einen bestimmten Zeitraum im Speicher. Hier liest der Server für einen kurzen Zeitraum nicht die Datenbank oder die reale Datenquelle, sondern die Daten, die Sie im Speicher speichern. Caching ist ein unverzichtbarer Datenverarbeitungsmechanismus zur Optimierung der Website-Leistung. Es kann den Datenbankdruck wirksam verringern. Der Cache in ASP.NET ist hauptsächlich unterteilt in:
Seiten-Cache
Datenquellen-Cache
Benutzerdefinierter Daten-Cache
22. Führen Sie Lastausgleich und Server durch Bonus
Lastausgleich sollte nicht nur als Mittel zur Erreichung von Skalierbarkeit betrachtet werden. Während es sicherlich die Skalierbarkeit verbessert, erhöht es um ein Vielfaches die Leistung von Webanwendungen, da Anfragen und Benutzer auf mehrere Server verteilt sind.
23. Code-Inspektion und -Optimierung durch FxCop
FxCop ist ein Code-Analysetool, das eine regelbasierte Engine verwendet, um die nicht standardmäßigen Teile Ihres Codes zu überprüfen Fügen Sie dieser Engine Ihre eigenen Regeln hinzu. Einige der Regeln sind:
Vermeiden Sie zu viele lokale Variablen
Vermeiden Sie nicht aufgerufenen privaten Code
Vermeiden Sie nicht instanziierte innere Klassen
Vermeiden Sie die Verwendung nicht versiegelter Attribute
Unnötige Umwandlungen vermeiden
Statische Felder von Referenztypen inline initialisieren
Assemblys mit NeutralResourcesLanguageAttribute markieren
Mitglieder als statisch markieren und so weiter.
24.ASP.NET-Leistungsüberwachungstools
Dies sind Tools zur Überwachung der Leistung Ihres Codes.
.NET Memory Analyzer
Red Gate ANTS Performance Analysis Tool
Fiddler
Performance Counter
Fazit: Die oben genannten sind einige Leistungsdaten Tipps für Anpassungen. Leistungsoptimierung ist keine ein- oder zweitägige Arbeit, sondern ein iterativer Prozess. Wenn Website-Entwickler beim Schreiben von ASP.NET-Anwendungen auf Leistungsprobleme achten, gute Gewohnheiten entwickeln und die Anwendungsleistung verbessern, können notwendige Hardware-Upgrades zumindest verschoben und die Kosten der Website gesenkt werden.