Die meisten ASP-Anwendungen (Active Server Pages) erstellen HTML-Format-Daten, die Benutzer über die String-Verkettung vorgelegt wurden. Dieser Artikel vergleicht verschiedene Möglichkeiten, um diesen HTML -Datenstrom zu erstellen, und in bestimmten Fällen übertreffen einige Methoden andere in der Leistung. In diesem Artikel geht davon aus, dass Sie bereits über ein gewisses Wissen über ASP und Visual Basic -Programmierung verfügen.
Beim Schreiben einer ASP -Seite erstellt der Entwickler tatsächlich einen formatierten Textstrom, der über das vom ASP bereitgestellte Antwortobjekt an den Web -Client geschrieben wurde. Es gibt eine Vielzahl von Möglichkeiten, um diesen Textstrom zu erstellen, und die Methode, die Sie auswählen, hat einen großen Einfluss auf die Leistung und Skalierbarkeit Ihrer Webanwendung. Als ich Kunden half, die Leistung ihrer Webanwendungen zu optimieren, stellte ich oft fest, dass eine der effektiveren Möglichkeiten darin besteht, die Art und Weise zu ändern, wie HTML -Streams erstellt werden. In diesem Artikel werden mehrere gängige Techniken eingeführt und ihre Auswirkungen auf die Leistung einer einfachen ASP -Seite getestet.
Viele ASP -Entwickler befolgen gute Software -Engineering -Prinzipien und modularisieren ihren Code so weit wie möglich. In diesem Design werden in der Regel Dateien enthalten, die Funktionen enthalten, die spezifische diskontinuierliche Teile der Seite formatieren. Die String -Ausgabe dieser Funktionen (normalerweise HTML -Tabellencode) kann eine vollständige Seite über verschiedene Kombinationen erstellen. Einige Entwickler haben diesen Ansatz verbessert, indem sie diese HTML -Funktionen in visuelle Basic -COM -Komponenten verschieben, in der Hoffnung, die zusätzliche Leistung durch kompilierten Code zu nutzen.
Obwohl dieser Entwurfsansatz gut ist, hat die Methode zum Erstellen von Zeichenfolgen, aus denen diese diskontinuierlichen HTML -Codekomponenten ausmachen, einen großen Einfluss auf die Leistung und Skalierbarkeit der Website, unabhängig davon, ob der tatsächliche Vorgang in einer ASP -Include -Datei oder in einer visuellen Basiskomponente durchgeführt wird.
Bitte beachten Sie den folgenden Code -Snippet der WriteHtml -Funktion. Ein Parameter mit dem Namen Daten ist nur ein Array von Zeichenfolgen, die einige Daten enthalten, die in eine tabellarische Struktur formatiert werden sollen (z. B. Daten, die aus einer Datenbank zurückgegeben werden).
Function WriteHTML( Data )Dim nRepFor nRep = 0 to 99 sHTML = sHTML & vbcrlf _ & "<TR><TD>" & (nRep + 1) & "</TD><TD>" _ & Data( 0, nRep ) & "</TD><TD>" _ & Data( 1, nRep ) & "</TD><TD>" _ & Daten (2, NREP) & "</td> <td>" _ & data (2, nRep) & "</td> <td>" _ & data (3, nrep) & "</td> <td>" _ & data (4, nrep) & "</td> <td>" _ & data (5, NREP) (5, NREP) (5, 5, NREP) (5, NREP) (5, NREP) (5, NREP) (5, NREP) (5, NREP) (5, 5, Nr. "</Td> </tr>" NextWriteHtml = shtmlend -Funktion
Dies ist eine gemeinsame Methode, die von vielen ASP- und Visual Basic -Entwicklern beim Erstellen von HTML -Code verwendet wird. Der in der SHTML -Variablen enthaltene Text wird an den aufrufenden Code zurückgegeben und mit response.write an den Client geschrieben. Dies kann natürlich auch als ähnlicher Code ausgedrückt werden, der direkt eine Seite einbettet, die die Funktion writehtml nicht enthält. Das Problem mit diesem Code ist, dass die von ASP und Visual Basic verwendeten String -Datentypen (BSTR- oder Basic -Zeichenfolgen) die Länge nicht tatsächlich ändern können. Dies bedeutet, dass wenn sich die Stringlängen ändert, die ursprüngliche Darstellung der Zeichenfolge im Speicher beschädigt wird und eine neue Darstellung, die die neuen String -Daten enthält, erstellt wird: Dies erhöht den Betrieb der Zuordnungsspeicher und des Deallocing -Speichers. Natürlich haben ASP und Visual Basic dies für Sie gelöst, sodass der tatsächliche Overhead nicht sofort angezeigt wird. Die Zuweisung und der Unalocate -Speicher erfordern, dass grundlegender Laufzeitcode jede spezielle Sperre entsperrt, sodass viel Overhead erforderlich ist. Dieses Problem wird besonders deutlich, wenn Saiten zu großen und großen Gedächtnisbrocken werden, die auf schnelle und kontinuierliche Weise zugewiesen und verhandelt werden sollen, wie es während einer großen String -Verkettung auftritt. Obwohl dieses Problem nur geringe Auswirkungen auf eine Einzelbenutzerumgebung hat, kann es in Serverumgebungen zu ernsthaften Leistung und Skalierbarkeitsproblemen führen (z. B. ASP-Anwendungen, die auf einem Webserver ausgeführt werden).