Seit der Veröffentlichung von ASP sind sieben Jahre vergangen, und die Verwendung der ASP-Technologie ist ziemlich ausgereift. Seit Microsoft ASP.NET eingeführt hat, wurde die Aktualisierung der ASP-Version schrittweise eingestellt. Da viele Leute es aber immer noch gewohnt sind, ASP zum Entwickeln von Websites zu verwenden, werde ich noch einmal anhand eines einfachen Beispiels veranschaulichen, wie man Cache in ASP verwendet.
Einfach ausgedrückt besteht das Grundprinzip der Verwendung von Cache darin, häufig benötigte und teure Daten für einen bestimmten Zeitraum im Speicher zu speichern, damit auf diese Daten direkt und global zugegriffen werden kann. Beispielsweise müssen einige Daten aus mehreren Tabellen in der Datenbank abgefragt werden, und fast jede Seite muss diese Daten aufrufen. Die beste Implementierung besteht in diesem Fall darin, diesen Teil der Daten zwischenzuspeichern. Eine einfache Implementierung in ASP besteht darin, die endgültige Ausdrucksform dieser Daten (z. B. einen HTML-Stream) in einer Zeichenfolge zu kapseln und sie dann im integrierten ASP-Objekt zu speichern Anwendung (in diesem Artikel wird hauptsächlich der dynamische Cache besprochen, einfache ASP-Anwendungen werden weggelassen). Dies hat den Vorteil, dass dieser HTML-Code global auf der gesamten Website aufgerufen werden kann und die Anwendung im Speicher gespeichert wird, sodass keine Datenbankabfrage erforderlich ist, was die Antwortzeit beschleunigt und Serverlast spart. Dies geht natürlich zu Lasten des Speicherverbrauchs und ist ein typisches Beispiel für den Austausch von Raum gegen Zeit.
Obwohl die Verwendung dieser Methode viele Vorteile bietet, ist diese Methode bei häufig wechselnden Datenquellen (Datenbanken) möglicherweise nicht mehr anwendbar, da das ASP-Anwendungsobjekt einen Nachteil hat, nämlich dass es sich bei Änderungen in der Datenquelle nicht automatisch ändern kann . Ändern oder steuern Sie das Aktualisierungsintervall. Daher müssen Entwickler programmieren, um dynamischen Cache zu implementieren. Natürlich kann die Anwendung während des Programmentwurfs jedes Mal aktualisiert werden, wenn die Datenquelle (Datenbank) geändert wird. Somit ist die Datenquelle (Datenbank) immer konsistent. Bei der Programmierung müssen weitere Aspekte berücksichtigt werden, und es ist leicht, Details zu übersehen. Daher empfehle ich diese Methode nur in bestimmten Situationen.
Ich denke, der beste Weg in ASP besteht darin, den Cache regelmäßig durch Programmierung zu aktualisieren, was bedeutet, dass eine Ablaufzeit für die in der Anwendung gespeicherten Daten festgelegt wird. Natürlich verfügt das Application-Objekt in ASP nicht über ein solches ExpireTime-Attribut. Dies muss programmatisch umgesetzt werden.
Code
ASP: default.asp
< %@Language=VBScript% >
<%Option Explicit%>
<%Response.Buffer=True%>
<!--#include file = "conn.asp"-->
<!--#include file = "GetCache.asp"-->
<HTML>
<KOPF>
<TITLE>ASP-Cache-Demonstration</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
</HEAD>
<KÖRPER>
<h4>Cache alle 10 Sekunden aktualisieren:</h4>
<%
Antwort.Flush
GetHTMLStream
Antwort.Schreiben
HTMLStream
%>
</body>
</html>
ASP:getcache.asp
<%
Const CACHE_DEFAULT_INTERVAL = 30 'Cache alle 30 Sekunden aktualisieren
HTMLStream dimmen
DimIsExpires
IsExpires = CacheExpires
FunctionCacheExpires
StrLastUpdate dimmen
Ergebnis dimmen strLastUpdate = Application("LastUpdate")
If (strLastUpdate = "") Or (CACHE_DEFAULT_INTERVAL < DateDiff("s", strLastUpdate, Now)) Then
Ergebnis = wahr
SetLastUpdateTime
Anders
Ergebnis = falsch
Ende wenn
CacheExpires = Ergebnis
End Function
Sub SetLastUpdateTime
Anwendungssperre
Application("LastUpdate") = CStr(now())
Anwendung.UnLock
End Sub
Sub GetHTMLStream
Wenn IsExpires Then
UpdateHTMLStream
Ende wenn
HTMLStream=Application("CACHE_HTMLStream")
End Sub
Sub UpdateHTMLStream
dim d
d = FetchHTMLStream
Anwendungssperre
Application("CACHE_HTMLStream") = d
Anwendung.UnLock
Unterfunktion FetchHTMLStream
beenden
Dimmen Sie rs, strSQL, strHTML
Setze rs = CreateObject("ADODB.Recordset")
strSQL = „Kategorie-ID und Kategorienamen aus Kategorien auswählen“
rs.Open strSQL, strConn,adOpenForwardOnly,adLockReadOnly
strHTML = strHTML & "<select name=""slt_search"">"
while (nicht rs.EOF)
strHTML = strHTML & "<option>"
strHTML = strHTML & rs.Fields("categoryname")
strHTML = strHTML & "</option>" rs.MoveNext
wenden
strHTML = strHTML & "</select>"
rs.Schließen
Setrs=Nichts
FetchHTMLStream = strHTML
Funktion beenden
%>
ASP: conn.asp
<!--METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->
<%
dim strConn
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind"
%>