1. Was ist ASP-Caching/Warum sollte es zwischengespeichert werden? Wenn Ihre Website zum ersten Mal mit der ASP-Technologie eingerichtet wird, spüren Sie möglicherweise den Komfort, den die ASP-Technologie für dynamische Webseiten bietet, sowie die Freiheit zur Änderung und die kostenlose HTTP-Kontrolle. Wenn jedoch die Anzahl der Besuche zunimmt, werden Sie definitiv feststellen, dass die Zugriffsgeschwindigkeit Ihrer Website immer langsamer wird und IIS immer häufiger neu gestartet wird. Als nächstes müssen Sie ASP optimieren, z. B. die Datenbank durch eine bessere Leistung ersetzen, Indizes erstellen, gespeicherte Prozeduren schreiben usw. Einige dieser Maßnahmen erfordern keinen erhöhten Kostendruck, während andere einen erheblichen Kostendruck erfordern (z. B. Clustering-Zugriff auf SQL), und die Wirkung ist nicht unbedingt sicher.
Angesichts des Webzugriffsdrucks denke ich, dass der wirtschaftlichste Weg darin besteht, die Cache-Optimierungstechnologie zu verwenden, um den Webdienstdruck zu verringern.
Erhöhter Webverkehr bedeutet oft ein schnelles Wachstum der Nachfrage nach den folgenden Ressourcen:
1. Der Anstieg des Netzwerkkartenverkehrs erfordert mehr CPU zur Verarbeitung des Netzwerkverkehrs und der Netzwerk-E/A-Threads.
2. Die Notwendigkeit, Datenbankverbindungen häufiger zu öffnen/schließen (wenn Datenbanktechnologie verwendet wird – normalerweise verwendet ASP Datenbanken als Datenspeicher), die Anzahl der Dinge, die ernsthaft Ressourcen verbrauchen, und Deadlocks, die durch Transaktionen verursacht werden, die um Ressourcen konkurrieren, erhöhen die Netzwerk-I/ O Oder CPU-Verbrauch.
3. Wenn eine Sitzung verwendet wird, verbraucht IIS mehr Speicher, um den Status aufrechtzuerhalten, und der Speicherverbrauch kann dazu führen, dass der physische Speicher nicht ausreicht, was zu einem häufigen Austausch zwischen physischem Speicher und Hilfsspeicher führt, was dazu führt, dass die Codeausführung angehalten und die Webantwort blockiert wird. .
4. Aufgrund der fehlenden zeitnahen Reaktion auf den Zugriff kommt es zu einem Fehler beim Zugriff auf die Webseite, was dazu führt, dass der Benutzer aktualisiert wird, was den Bedarf an Ressourcen wie CPU und Speicher erhöht.
Tatsächlich ist eine dynamische Codeausführung bei gängigen Webanwendungen oft unnötig.
2. Die Klassifizierung des ASP-Cache kann ohne Autorisierung in zwei Kategorien unterteilt werden:
1. Das sogenannte Datei-Caching basiert auf der logischen Einschätzung, dass sich die spezifische Ausführung eines bestimmten ASP innerhalb eines bestimmten Zeitraums nicht wesentlich ändert. Daher wird der Inhalt in Form von statischem HTML gespeichert Die Webumleitungstechnologie wird verwendet, um Kunden einen End-to-End-Zugriff auf statische Dateien zu ermöglichen und so den Bedarf an CPU, Datenbankressourcen usw. zu reduzieren. Es gibt viele solcher Anwendungen. Beispielsweise generieren viele Foren den gesamten Beitrag in einer statischen Datei, wenn sie auf einen Beitrag antworten, und leiten ihn dann weiter, beispielsweise das Forum donews.com. Es gibt auch einen Nebeneffekt (Vorteil), statisch zu sein: Es kann leicht von Suchmaschinen wie Google indiziert werden. Einige sogenannte Pressemitteilungssysteme haben diese Technologie übernommen.
2. Das sogenannte Datei-Caching basiert ebenfalls auf einer logischen Beurteilung. Ein bestimmter Teil der Daten (normalerweise durch Abfragen einer Datenbank mit großer Kapazität, die Ressourcen verbraucht) wird sich innerhalb eines bestimmten Zeitraums nicht ändern Wir können diese Daten in Form von Dateien speichern. Bei Bedarf können Daten durch Lesen von Dateien abgerufen werden, um eine erhöhte Belastung der Datenbank zu vermeiden. Beispielsweise speichern wir normalerweise einige Daten im XML-Format und verwenden sie dann So wird das CSDN-Forum gehandhabt.
3. Hauptspeicher-Cache Darüber hinaus können Sie auch das Caching im Speicher in Betracht ziehen. Dabei werden Inhalte, die eine zeitnahe Reaktion erfordern, im Speicher gespeichert. Sobald ein Zugriff erforderlich ist, werden sie sofort vom schnellen Speicher übertragen. Wenn sehr viele Zugriffsanforderungen auf wenige kleine Seiten konzentriert sind oder der Hauptspeicher groß genug ist, kann die Verwendung von Hauptspeicher-Caching meines Erachtens die Webzugriffsleistung auf jeden Fall erheblich verbessern.
3. So implementieren/verwenden Sie den Cache: Um den Cache zu implementieren, müssen Sie die folgenden Probleme berücksichtigen:
1. Welche Seiten werden sich in kurzer Zeit nicht ändern?
Analysieren Sie Ihre eigene Website, es gibt viele solcher Seiten. Beispielsweise verfügt eine Website normalerweise über Nachrichten- und Informationsspalten. Diese Spalten werden normalerweise zu einer bestimmten Tageszeit von den Website-Betreuern veröffentlicht und die Seiten werden danach nur noch selten geändert. Dann eignen sich diese Seiten für das statische Datei-Caching. Genau das macht das sogenannte News-Release-System, sodass Sie auch auf die Ideen dieser Systeme zurückgreifen können, um Ihre ursprünglichen dynamischen ASP-Seiten umzuwandeln.
2. Diese Seiten werden mit der gleichen Logik für alle Besucher generiert (d. h. Besucher werden nicht unterschieden).
Zusätzlich zu Spalten wie Nachrichten und Informationen, in denen alle Besucher die gleiche Oberfläche sehen, können ressourcenintensive Anwendungen wie Foren im Allgemeinen so gestaltet werden, dass sie eine einheitliche Logik generieren (derselbe Beitrag wird von drei Personen gleich angezeigt). Solche Anwendungsseiten können wir auch Dies kann durch statisches Caching erreicht werden. Sie können auch erwägen, die Daten zu fragmentieren und Skripttechnologie zu verwenden, um sie über die Verarbeitungsfähigkeiten des Servers, also des Client-Browsers hinaus, zu verarbeiten.
3. Die Kosten und Gewinne der Verwendung von Caching.
Die Hauptsache ist „Raum für (Reaktions-)Zeit“. Nutzen Sie Caching-Technologie, um in Zukunft häufig benötigte Inhalte vorzuverarbeiten, um die Reaktionsfähigkeit des Webservers zu verbessern und, was noch wichtiger ist, die Gunst der Besucher zu gewinnen.
Der Preis besteht darin, dass die Nachfrage nach Webspace steigt und gleichzeitig der Zugriffseffekt beeinträchtigt werden kann.
Aber ich denke, dass richtiges Caching mehr Vorteile als Nachteile hat.
4. Diese Orte eignen sich nicht zum Zwischenspeichern dynamischer Abfrageseiten. Daher sind die Anzeigeergebnisse unterschiedlich und es ist unmöglich, die Abfrageergebnisse zwischenzuspeichern. Daher ist das Zwischenspeichern komplizierter und die Cache-Auslastungsrate ist gering. Dies führt zu Verwaltungsproblemen (wenn Sie 1.000 Abfrageschlüsselwörter zwischenspeichern, ist die Verwaltung der Korrespondenz zwischen diesen Schlüsselwörtern und dem Cache ebenfalls mühsam).
4. Beispielanalyse Nehmen Sie an, dass das ursprüngliche Layout eines Vorschlagsforums wie folgt aussieht:
Im Stammverzeichnis:
default.asp-Homepage, normalerweise Highlights, Empfehlungen usw.
listBorad.asp Diese Datei listet die Namen und Einleitungen aller Spalten auf. Wenn sie den Parameter MainBID trägt, bedeutet dies, dass die Spalten unter dem Abschnitt aufgelistet werden sollen.
listThread.asp Wenn diese Datei keine Parameter enthält, bedeutet dies, dass alle Beiträge aufgelistet sind. Wenn sie MainBID enthält, bedeutet dies, dass alle Beiträge in einem bestimmten Block aufgelistet sind. Wenn subBID übertragen wird, bedeutet dies, dass Beiträge in bestimmten Spalten aufgelistet werden. Wenn der Seitenparameter übertragen wird, werden die Themen in Seiten aufgelistet.
ViewThread.asp listet den Inhalt eines Beitrags auf. Wir gehen davon aus, dass der Beitrag als Kommentar angezeigt wird und eventuelle Kommentare am Ende aufgelistet werden. Der ID-Parameter ist der anzuzeigende Beitrag.
Reply.asp antwortet auf einen bestimmten Beitrag und trägt die Parameter-ID, um auf einen bestimmten Beitrag zu antworten. Der Rest wird vorerst nicht besprochen.
Aus dem oben Gesagten können wir ersehen, dass, wenn alles mit Original-ASP/PHP erledigt wird, die Ausführung fast jeder ASP-Datei Datenbankoperationen, häufige Abfragen und Abfragen mehrerer Tabellen erfordert. Sie müssen wissen, dass das Abfragen der Datenbank letztendlich zu einer Verringerung der Leistung und Antwortgeschwindigkeit führt, was sich auf das langsame Surfen der Besucher auswirkt und sich nicht positiv auf die Qualität des Webs auswirkt. Wichtiger ist, dass für zwei Personen, A und B, wenn sie auf ViewThread.asp und dergleichen zugreifen und die ID dieselbe ist, sie oft denselben Inhalt sehen (der von ihren Browsern empfangene HTML-Code ist fast identisch). gleich), aber für diesen „gleichen Inhalt“ muss der Server Datenbankverbindungen öffnen, abfragen, Datensätze lesen, anzeigen, Datensätze und Datenbankverbindungen schließen. . . . Wenn mehr Personen auf die folgenden Vorgänge zugreifen, die Serverressourcen verbrauchen, wird das Endergebnis sein, dass diese Personen mehr Serverressourcen verbrauchen. Tatsächlich können diese wiederholten Bemühungen für den „gleichen Inhalt“ durch den Einsatz von Caching-Technologie zur Optimierung vermieden werden. Zum Beispiel:
Nachdem wir den Inhalt in „reply.asp“ übermittelt haben, rufen wir sofort die statische Funktion auf und speichern den gesamten Beitragsinhalt als statische HTML-Datei, z. B. „viewThread_xxxx.htm“. Unter normalen Umständen leitet das System beim Zugriff auf „viewThread.asp?ID=xxxx“ automatisch um in die entsprechende statische Datei viewThreadxxxx.htm. Wenn ein Beitrag nicht über die neueste Version verfügt, wird er den Zuschauern immer als statischer Inhalt bereitgestellt. Sobald eine neue Übermittlung vorliegt, werden viele Datenbankvorgänge gespeichert und die Reaktionsgeschwindigkeit wird erheblich verbessert.
listBorad.asp kann auch statisch implementiert werden. Wir können die Parameter analysieren, die es möglicherweise enthält, den Namen der Cache-Datei auf listBoard_xx.htm festlegen und listBoard_xxx.htm aktualisieren, wenn neue Spalten hinzugefügt werden. listThread.asp ist ähnlich, außer dass es viele Cache-Dateien gibt, da es mehr Parameter hat. Wenn Sie listThread.asp? subBID=xxx&page=2 zwischenspeichern möchten, ist die entsprechende statische Datei listThread_xxx_p2.htm. Das Gleiche gilt für default.asp.
Wie erkennen Sie also, wann Sie ein Update durchführen müssen? Wann wird es aktualisiert?
Bei der Diskussion von listThread.asp? subBID=xxx&page=2 extrahieren wir beim Ausführen von listThread.asp die SubID und die Seite und ermitteln dann, ob listThread_xxx_p2.htm vorhanden ist. Rufen Sie die statische Generierungsfunktion auf, um die Datei zu generieren, und leiten Sie sie schließlich um hier statische Dateien. Beachten Sie, dass das Fehlen hier bedeutet, dass es neue Inhalte gibt, die aktualisiert werden müssen.
Wie kann man also verhindern, dass die Datei existiert? löschen. Wenn wir einen neuen Beitrag veröffentlichen, einen Beitrag löschen oder einen Beitrag verschieben, können wir alle statischen Dateien wie listThread_xxx_p2.htm löschen. Hier erfahren Sie, wann Sie zwischenspeichern müssen.
Jetzt bleibt noch eine Frage: Wie generiert man statische Dateien?
Wir stellen fest, dass es sich um den „gleichen Inhalt“ handelt, den wir zuvor erwähnt haben. Wir können vor der Transformation eine Kopie von default.asp, listThread.asp usw. mit den Namen default_d.asp, listThread_2.asp und im selben Verzeichnis erstellen (theoretisch ist listThtrad.asp?subID=123 dasselbe wie LISTtHREAD_D.ASP). ? Das Zugriffsergebnis von SUBID=123 wird derselbe Inhalt sein. In der Logik, die statische Dateien generieren muss, rufen wir die Kopie vor der Transformation über eine WEB-Zugriffsanforderung auf, rufen den HTML-Code ab und speichern ihn als statische Datei. Diese Webanforderung entspricht tatsächlich der Anzeige des ausgegebenen HTML durch den Server selbst, bevor ein echter Browser auf den statischen Inhalt zugreift, diese Codes dann zurückgibt und sie mithilfe der Dateioperationsfunktion als statische Dateien speichert. Auf diese Weise wird die Cache-Datei vor dem eigentlichen Viewer erstellt.
Eine solche Lösung wird das ursprüngliche Layout kaum beeinträchtigen und aufgrund von Änderungen fast nie zu Fehlern wie 404 führen. Zweitens tragen statische Dateien auch dazu bei, dass Ihre Website von Suchmaschinen wie Google leicht indiziert wird. Warum nicht?
Zum Schluss noch eine Erinnerung: Über den Webzugriff verwenden viele Menschen in der ASP-Programmierumgebung die xmlHTTP-Komponente für den Zugriff, was viele Probleme verursachen wird. xmlhttp selbst speichert die angeforderten Ressourcen im Cache, was dazu führt, dass der über diese Komponente angeforderte Inhalt nicht der neueste ist, was zu logischer Verwirrung führt. Daher sollten Sie das XML-Server-HTTP-Objekt oder die Winhttp-Komponente auswählen, um Webanforderungsressourcen zu implementieren.
Die Verwendung der Caching-Technologie in ASP kann die Leistung Ihrer Website erheblich verbessern. Es wird erklärt, wie das Caching auf dem Server funktioniert und wie Sie eine Methode namens ADO-Verbindungstechnologie verwenden können.
Bevor wir diese Technologien vorstellen, erklären wir, was genau die ASP-Caching-Technologie ist.
Der sogenannte Cache dient eigentlich dazu, einen Speicherplatz im Speicher freizugeben, um Daten zu speichern. Durch die Verwendung des Caches müssen Sie nicht häufig auf die auf der Festplatte gespeicherten Daten zugreifen Die Qual, zuzusehen, wie die arme Festplatte voll wird, quält mich mit dem Lesen von Daten. Sobald Sie eine Abfrage ausführen und die Abfrageergebnisse im Cache ablegen, können Sie schnell und wiederholt auf die Daten zugreifen. Und wenn Sie die Daten nicht in den Cache legen und die Abfrage erneut ausführen, verbringt der Server den Prozess damit, sie aus der Datenbank abzurufen und zu sortieren.
Wenn die Daten im Cache gespeichert werden, ist die Zeit, die beim erneuten Abfragen aufgewendet wird, hauptsächlich die Zeit, die Daten anzuzeigen.
Mit anderen Worten: Wir sollten Daten, die sich häufig ändern müssen, nicht im Cache des Servers ablegen. Wir sollten Daten, die sich weniger ändern, auf die aber häufig zugegriffen werden muss, im Cache ablegen.
Jetzt werden wir diskutieren, wie ASP die Caching-Technologie auf der Serverseite verwendet, und dann werden wir diskutieren, wie ASP die Caching-Technologie auf der Clientseite verwendet.
Wenn Sie über eine große Datenmenge (statisch, d. h. mit geringer Änderung) verfügen, die dem Client angezeigt werden muss, können Sie die Verwendung serverseitiger Caching-Technologie in Betracht ziehen. Diese Technologie eignet sich besonders für Websites mit einer starken Konsistenz des Anzeigestils (haha, für Nicht-Mainstream-Websites ist die Verwendung nicht einfach.)
Tatsächlich ist die Implementierungsmethode sehr einfach. Sie müssen sich nur das einfache Beispiel unten ansehen, um es zu verstehen.
Dies ist ein Beispielprogramm zur Anzeige von Buchkategorien
DisplayBooks.ASP-Datei:
< %@ LANGUAGE=JavaS
Skript % >
<html>
<Körper>
<form method=post>
Buchklassifizierung; < %= getBooksListBox() % >
<p>
<Eingabetyp=Senden>
<%
Funktion getBooksListBox()
{
BooksListBox = Application("BooksListBox")
if (BooksListBox != null) return BooksListBox;
crlf = String.fromCharCode(13, 10)
BooksListBox = „< select name=Books>“ + crlf;
SQL = „Select * FROM Books orDER BY Name“;
cnnBooks = Server.CreateObject("ADODB.Connection");
cnnBooks.Open("Books", "Admin","");
rstBooks = cnnBooks.Execute(SQL);
fldBookName = rstBooks("BookName");
while (!rstBooks.EOF){
BooksListBox = BooksListBox + ” <option>” +
fldBookName + "" + crlf;
rstBooks.MoveNext();
}
BooksListBox = BooksListBox + ""
Application("BooksListBox") = BooksListBox
return BooksListBox;
}
%>
Es ist sehr einfach. Tatsächlich verwendet es eine sehr einfache Anwendungstechnologie, und der Unterschied besteht nur in einem Satz:
Application("BooksListBox") = BooksListBox
Sie können es überprüfen und werden feststellen, dass die Anzahl der Anfragen auf dem Server stark reduziert wird. Diese Situation eignet sich besonders für Website-Inhalte, die nicht sehr häufig aktualisiert werden, z. B. wenn Sie sie nur einmal am Tag (oder über einen längeren Zeitraum) aktualisieren.
Als nächstes besprechen wir eine clientseitige Caching-Technologie. Diese Technologie wird auch als getrennte ADO-Verbindungstechnologie bezeichnet (die Übersetzungsebene ist zu niedrig, warum klingt das so umständlich). Diese Technologie wird hauptsächlich zum Speichern persönlicher Daten der Benutzer wie Benutzerkennwörter, Codenamen usw. verwendet. Es nutzt hauptsächlich einige Eigenschaften von ADO. Gleichzeitig wird auch die von einigen Internetnutzern gestellte Frage beantwortet, ob ADO-Objekte in Applocation verwendet werden können. Die Erklärung ist nicht klar, lassen Sie den Code sprechen:
Datei GLOBAL.ASA:
< !–METADATA TYPE=“TypeLib“ FILE=“C:ProgrammeCommon
Dateiensystemadomsado15.dll“–>
< SCRIPT LANGUAGE=VBScript RUNAT=“Server“ >
Sub Application_OnStart
SQL = „Benutzernamen und Passwort aus Benutzerinfo auswählen“
cnnUsers = „DSN=Benutzer“
Setze rsUsers = Server.CreateObject("ADODB.Recordset")
„Beachten Sie, dass die folgenden zwei Sätze zur Implementierung der ADO-Technologie namens „Available Disconnection“ verwendet werden.
rsCustomers.CursorLocation = adUseClient
rsCustomers.Open SQL, cnnAdvWorks, adOpenStatic, AdLockReadOnly
' Trennen Sie das RecordSet von der Datenbank
rsCustomers.ActiveConnection = Nichts
Legen Sie Application("rsCustomers") = rsCustomers fest
Sub beenden
FileUsers.ASP
<%
Mit der Clone-Methode kann jeder Benutzer seine eigene RecordSet-Sammlung haben
Legen Sie yourUsers = Application("rsUsers").Clone fest
Setze UserName = yourUsers("UserName")
Passwort festlegen = yourUsers("Passwort")
Tun Sie dies, bis yourUsers.EOF
%>
Benutzername: < %= Benutzername % > Benutzerpasswort: < %= Passwort % >
<%
yourUsers.MoveNext
Schleife
%>