ASP Tipp 15: Stapeln Sie Inlineskripts und Response.Write-Anweisungen

Die VBScript-Syntax <% = expression %> schreibt die Werte von „expression“ in den ASP-Ausgabestrom. Wenn der Antwortpuffer nicht aktiviert ist, schreiben alle diese Anweisungen Daten in vielen kleinen Paketen über das Netzwerk in den Browser. Dies geht nur langsam vonstatten. Außerdem führt das Abwechseln von kleinen Skript- und HTML-Mengen zu einem Wechsel zwischen dem Skriptmodul und HTML, was sich ebenfalls negativ auf die Leistung auswirkt. Halten Sie sich daher an folgenden Tipp: Ersetzen Sie eng gepackte Inlineanweisungen durch einen Aufruf von Response.Write. Im folgenden Beispiel erfolgt pro Feld und Zeile ein Schreibvorgang im Antwortstrom, und pro Zeile finden viele Wechsel zwischen VBScript und HTML statt.

<table>

<% For Each fld in rs.Fields %>

<th><% = fld.Name %></th>

<%

Next

While Not rs.EOF

%>

<tr>

<% For Each fld in rs.Fields %>

<td><% = fld.Value %></td>

<% Next

</tr>

<% rs.MoveNext

Wend %>

</table>

Im effizienteren Code weiter unten erfolgt pro Zeile ein Schreibvorgang im Antwortstrom. Der gesamte Code ist in einem VBScript-Block enthalten:

<table>

<%

For each fld in rs.Fields

Response.Write („<th>“ & fld.Name & „</th>“ & vbCrLf)

Next

While Not rs.EOF

Response.Write („<tr>“)

For Each fld in rs.Fields %>

Response.Write(„<td>“ & fld.Value & „</td>“ & vbCrLf)

Next

Response.Write „</tr>“

Wend

%>

</table>

Dieser Tipp hat wesentlich stärkere Auswirkungen, wenn der Antwortpuffer deaktiviert ist. Es empfiehlt sich, den Antwortpuffer zu aktivieren, und auszuprobieren, ob die Leistung durch Stapelverarbeitung von Response.Write verbessert werden kann.

(In diesem speziellen Beispiel kann die verschachtelte Schleife, die den Tabellenkörper erstellt (While Not rs.EOF…), durch einen gut durchdachten Aufruf von GetString), ersetzt werden.)