ASP Tipp 14: Verwenden Sie den Antwortpuffer

Sie können eine ganze auszugebende Seite durch Aktivieren des „Antwortpuffers“ puffern. Dadurch wird die Anzahl der Schreibvorgänge im Browser reduziert und die Gesamtleistung gesteigert. Für jeden Schreibvorgang ist ein großer Aufwand nötig (sowohl in IIS und bezüglich der über die Leitung gesendeten Datenmengen), d. h. je weniger Leitungen, desto besser. TCP/IP funktioniert aufgrund seines langsamen Starts und der Nagling-Algorithmen (zum Minimieren von Netzwerkstaus) effizienter, wenn anstelle von vielen kleinen Datenblöcken wenige große Datenblöcke gesendet werden können.

Sie können den Antwortpuffer auf zwei Arten aktivieren. Einerseits können Sie den Antwortpuffer mit dem Internetdienste-Manager für die gesamte Anwendung aktivieren. Diese Methode wird empfohlen. Der Antwortpuffer wird in IIS 4.0 und IIS 5.0 standardmäßig für neue ASP-Anwendungen aktiviert. Andererseits können Sie den Antwortpuffer auf Seitenbasis aktivieren, indem Sie folgende Codezeile am oberen Rand der ASP-Seite positionieren.

<% Response.Buffer = True %>

Diese Codezeile muss ausgeführt werden, bevor Antwortdaten in den Browser geschrieben werden (d. h., bevor HTML im ASP-Skript angezeigt wird, und bevor Cookies mit der Response.Cookies-Auflistung festgelegt wurden). Im Allgemeinen sollten Sie den Antwortpuffer für die ganze Anwendung aktivieren. Damit ist die obige Codezeile auf jeder Seite überflüssig.

Response.Flush

Benutzer sind häufig der Meinung, dass die Antwortzeit von ASP-Seiten durch den Antwortpuffer langsamer ist (obwohl die Antwortzeit insgesamt verbessert ist), weil sie warten müssen, bis die gesamte Seite generiert wurde, bevor eine Anzeige erfolgt. Sie können den Antwortpuffer für lange Seiten deaktivieren, indem Sie Response.Buffer = False festlegen. Es gibt aber eine bessere Strategie: Verwenden Sie stattdessen die Response.Flush-Methode, bei der ASP den gesamten gezeichneten HTML-Inhalt im Browser anzeigt. Nachdem z. B. 100 Zeilen einer aus 1000 Zeilen bestehenden Tabelle gezeichnet wurden, kann ASP Response.Flush aufrufen, um die gezeichneten Ergebnisse im Browser anzuzeigen. Damit kann der Benutzer die ersten 100 Zeilen sehen, bevor die verbleibenden Zeilen fertig sind. Diese Methode bietet Ihnen das Beste aus beiden Bereichen: den Antwortpuffer in Kombination mit der allmählichen Präsentation der Daten im Browser.

(Beachten Sie, dass viele Browser beim oben dargestellten Beispiel einer aus 1000 Zeilen bestehenden Tabelle die Tabelle erst anzeigen, wenn sie das schließende Kennzeichen </table> sehen. Präfen Sie, ob die gewünschten Browser die teilweise Anzeige unterstützen. Sie können dieses Problem umgehen, indem Sie die Tabelle in mehrere Tabellen mit einer geringeren Anzahl von Zeilen aufteilen und nach jeder Tabelle Response.Flush aufrufen. Neuere Versionen von Internet Explorer zeigen Tabellen an, bevor sie vollständig gedownloadet wurden, und die Anzeige erfolgt besonders schnell, wenn sie die Spaltenbreiten der Tabelle festlegen. Dadurch braucht Internet Explorer die Spaltenbreiten nicht durch Messen des Inhalts jeder einzelnen Zelle zu berechnen.)  

Benutzer beschweren sich beim Antwortpuffer außerdem darüber, dass er beim Generieren sehr großer Seiten sehr viel Serverspeicher verbraucht. Ohne hier Weisheiten über das Generieren von sehr großen Seiten abzugeben, lässt sich dieses Problem ebenfalls mithilfe von Response.Flush beheben.