Tipp eins: Verbessern Sie die Effizienz der Verwendung der Request-Sammlung
. Der Zugriff auf eine ASP-Sammlung zum Extrahieren eines Werts ist ein zeitaufwändiger und rechenintensiver Prozess. Da dieser Vorgang eine Reihe von Suchvorgängen in verwandten Sammlungen umfasst, ist er viel langsamer als der Zugriff auf eine lokale Variable. Wenn Sie also planen, einen Wert in der Request-Sammlung mehrmals auf der Seite zu verwenden, sollten Sie erwägen, ihn als lokale Variable zu speichern. Schreiben Sie den Code beispielsweise in der folgenden Form, um die Verarbeitung der Skript-Engine zu beschleunigen:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
Wenn strFirstName="" Dann strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Anders
strFullName=strTitle & strFirstName & " " & strLastName
Ende wenn
??Tipp 2: Direkt auf die entsprechende Sammlung zugreifen
??Wenn Sie keine Wahl haben, verwenden Sie nicht strPage=Request("page"), um Parameter abzurufen, da dadurch alle Sammlungen der Reihe nach durchsucht werden – QueryString, Form, Cookies, ClientCertificate, ServerVarible, bis der Name des ersten übereinstimmenden Werts gefunden wird. Dies ist weniger effizient als der direkte Zugriff auf die entsprechende Sammlung und unsicher, es sei denn, es besteht eine absolute Garantie, dass der Wert nicht in einer anderen Sammlung erscheint.
Beispielsweise möchten Sie möglicherweise nach dem Namen eines WEB-Servers suchen, der die Anfrage eines Clients erfüllt. Dies erreichen Sie, indem Sie in der Request.ServerVarables-Sammlung, die in jeder Abfrage erscheint, nach „SERVER_NAME“ suchen. Wenn jedoch auch andere Sammlungen Werte mit dem Namen „SERVER_NAME“ enthalten (bei Schlüsselnamen wird die Groß-/Kleinschreibung nicht beachtet), erhalten Sie bei Verwendung von Request(„server_Name“) falsche Ergebnisse. Zusammenfassend sollte nach Möglichkeit direkt auf die entsprechende Sammlung zugegriffen werden.
?? Tipp 3: Verwenden Sie die Response.IsClientConnected-Eigenschaft vor zeitaufwändigen Vorgängen
?? Mit Response.IsClientConnected können Sie beobachten, ob der Benutzer noch mit dem Server verbunden ist und die von ASP erstellte Webseite lädt. Wenn der Benutzer die Verbindung trennt oder den Download abbricht, müssen wir beim Erstellen der Webseite keine Serverressourcen mehr verschwenden, da der Pufferinhalt von IIS verworfen wird. Bei Seiten, die viel Zeit für die Berechnung benötigen oder viele Ressourcen verbrauchen, lohnt es sich also, in jeder Phase zu prüfen, ob der Besucher offline ist:
… Code zum Erstellen des ersten Teils der Seite
Wenn Response.IsClientConnected, dann
Response.Flush
Anders
Antwort.Ende
Ende wenn
...... Code zum Erstellen des nächsten Teils der Seite
?? Tipp 4: ADO-Vorgänge in ASP optimieren
?? Im Allgemeinen bilden Daten den eigentlichen Inhalt der WEB-Site. Daher ist es sehr nützlich, ADO-Vorgänge zu optimieren, um die Ausführung von ASP-Code zu beschleunigen:
??a. Wählen Sie nur erforderliche Spalten aus: Beim Öffnen eines ADO-Recordsets sollten Sie nicht automatisch den Tabellennamen (z. B. SELECT *) verwenden, es sei denn, Sie müssen alle Spalten abrufen. Durch die Verwendung separater Spalten wird die Menge der an den Server gesendeten oder von diesem abgerufenen Daten reduziert. Selbst wenn Sie alle Spalten verwenden müssen, erzielen Sie die beste Leistung, indem Sie jede Spalte einzeln benennen, da der Server die Spaltennamen nicht interpretieren muss.
??b. Verwenden Sie so oft wie möglich gespeicherte Prozeduren. Gespeicherte Prozeduren sind vorkompilierte Programme, die einen vorbereiteten Ausführungsplan enthalten und daher schneller ausgeführt werden als SQL-Anweisungen.
??c. Verwenden Sie geeignete Cursor- und Sperrmuster. Wenn Sie lediglich Daten aus dem Recordset lesen und auf dem Bildschirm anzeigen, verwenden Sie das standardmäßige schreibgeschützte Recordset mit Weiterleitungszugriff. Je weniger Arbeit ADO für die Pflege der Details von Datensätzen und Sperren aufwenden muss, desto höher ist die Leistung.
??d. Objektvariablen verwenden. Eine sichere Möglichkeit, die Leistung beim Durchlaufen eines Recordsets zu verbessern, besteht darin, Objektvariablen zu verwenden, um auf Mitglieder der Sammlung zu verweisen. Zum Beispiel:
While Not RsGc.EOF
Response.Write „Projektname:“ & RsGc(„GcMC“) & „(Projektcode: „ & RsGc(“GcCode“) & „)
"
RsGc.MoveNext
Wend
kann als folgender Code umgeschrieben werden, um die Ausführung zu beschleunigen:
set GcMc=RsGc("GcMc")
setze GcCode=RsGc("GcCode")
While Not rsGc.EOF Response.Write "Projektname: " & GcMc & " (Projektcode: " & GcCode & ")
" RsGc.MoveNext
Wend
?? Der neue Code stellt einen Verweis auf die Objektvariable her, sodass die Objektvariable anstelle der tatsächlichen Variablen verwendet werden kann, was bedeutet, dass die Skript-Engine weniger Arbeit hat, da weniger Indizes in der Sammlung vorhanden sind.
??Tipp 5: Mischen Sie keine Skript-Engines
??Wir wissen, dass sowohl VBScript als auch JScript in ASP-Seiten verwendet werden können. Es ist jedoch nicht ratsam, JScript und VBScript gleichzeitig auf derselben Seite zu verwenden. Da der Server zwei (statt einer) Skript-Engine instanziieren und versuchen muss, sie zwischenzuspeichern, erhöht dies die Belastung des Systems in gewissem Maße. Aus Leistungsgründen sollten Sie daher nicht mehrere Skript-Engines auf derselben Seite mischen.