Beim Schreiben von ASP -Programmen, um die Effizienz von ASP -Programmen zu verbessern und Verbindungen und Abfragen zur Datenbank zu reduzieren, wird die Caching -Technologie normalerweise verwendet, um einige Daten zu zwischenstrahlen, die aus der Datenbank gelesen werden müssen. Als nächstes werden Sie mit dem falschen neuen Technologiekanal einen Blick darauf werfen!
Beispiel:
Programmcode:
Die Codekopie lautet wie folgt:Dim Rs, arr
Rs.open Conn, SQL, 1,1
arr = rs.getrows ()
Application.lock ()
Application ("cache") = arr
Applicatoin.unlock ()
In VBScript können Arrays in Anwendungsobjekten gespeichert werden. Wenn jedoch die ASP -Sprache als JSCript ausgewählt wird, ist sie etwas schlecht. Wenn wir die Anwendung verwenden, um ein Array zu speichern, tritt der folgende Fehler auf:
Zitat:
Anwendungsobjekt, ASP 0197 (0x80004005)
Nicht zugelassene Objektgebrauch
Das Verhalten des Apartmentmodellverhaltens kann dem intrinsischen Anwendungsobjekt kein Objekt hinzufügen.
Die spezifischen Gründe finden Sie in der Wissensbasis von Microsoft wie folgt:
Zitat:
Jscript -Arrays gelten als "Wohnung" COM -Komponenten. Nur Komponentenobjektmodell (COM) -Komponenten, die den kostenlosen Thread -Marschhal (FTM) aggregieren können, können dem Anwendungsbereich auf einer ASP -Seite (IIS) 5.0 -ASP (Internet Information Server) zugewiesen werden. Da eine "Wohnungs" -Komponente die FTM nicht aggregieren kann (es kann nicht zulassen, dass ein direkter Zeiger an seine Clients übergeben wird, im Gegensatz zu einem "beiden mit FTM" -Objekt), aggregieren JSCript -Arrays die FTM nicht. Daher können Jscript -Arrays von einer ASP -Seite nicht dem Anwendungsbereich zugewiesen werden.
Die obige Beschreibung wird zitiert von: PRB: Fehler Wenn Sie ein Jscript -Array in Anwendungsbereich in IIS 5.0 speichern
Um dieses Problem zu lösen, suchte ich daher nach einem wichtigen Treffen in Google und fand schließlich einen Artikel "einige Schlussfolgerungen über Cache für Anwendungsobjekte und staticObjects". Um dieses Problem zu lösen, besteht die Methode darin, die Anwendung zu verwenden. StaticObject zum Speichern eines Scripting.Dictionary -Objekts und dann das Scripting.Dictionary -Objekt, um die Daten zu speichern, die zwischengespeichert werden müssen.
Basierend darauf wird eine Klasse für Operation Cache geschrieben, um Methoden zu implementieren, zu erhalten, zu entfernen, zu entfernen und zu klären. Bevor Sie es verwenden, müssen Sie ein Objekt in global.asa hinzufügen:
Programmcode:
<Objekt ID = "xbscache" runat = "server" scope = "application" programm = "scripting.dictionary"> </Object>
Die Implementierung der Klasse ist wie folgt:
Die Codekopie lautet wie folgt:<script Language = "jscript" runat = "server">
/**
Titel: Cache -Betriebsklasse
Beschreibung: Betriebssystem -Cache
@Copyright: Copyright (C) 2007
@Author: Xujiwei
@Website: http://www.xujiwei.cn/
@Version: 1.0
@Time: 2007-06-29 12:03:45
**//
var xbscache = {
GET: Funktion (Schlüssel) {
return application.staticObjects ("xbscache"). item ("cache."+key);
},
Put: Funktion (Schlüssel, Daten) {
Application.lock ();
Application.staticObjects ("xbscache"). Item ("cache."+Key) = Daten;
Application.unlock ();
},
Entfernen: Funktion (Schlüssel) {
Application.lock ();
Application.staticObjects ("xbscache"). REMET ("Cache."+Key);
Application.unlock ();
},
klare: function () {
Application.lock ();
Application.staticObjects ("xbscache"). Removeall ();
Application.unlock ();
}
}
</script>
Auf diese Weise wird die Cache -Implementierung bei der Verwendung von Jscript in ASP abgeschlossen. Ich hoffe, dass der vom Editor des Fehlers New Technology Channel zusammengestellte Inhalt Ihnen Hilfe leisten kann.