Implementieren Sie Object-Caching in klassischem ASP-Memory-Leaking

Ich habe versucht, verschiedene Caching-Implementierungen in einer klassischen ASP-Site zu implementieren, um die Datenbank bei starkem Datenverkehr auszulagern.

Mein Ansatz war dieser:

Erstellen Sie ein globales HashTable-Objekt in global.asa, in dem ich später jscript-Objekte speichere

<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>

Dies gibt mir ein globales HashTable-Objekt, das ich in bestimmten Zeitabständen durch den Inhalt der HashTable ersetze. Die Größe wird nur geringfügig variieren, aber ich mache jedes Mal .Remove () und .Add () alle Objekte.

Dies funktioniert sehr gut, abgesehen von der Tatsache, dass die Speicherzuordnung der App nach einer bestimmten Zeit zu hoch wird, was zu einem irrationalen Verhalten der Sitzungen führt. Sitzungen werden "vergessen", OnSessionStart () in global.asa wird jedoch nicht aufgerufen. So bleibt den Besuchern eine leere Session-Sammlung.

Kann ich den Speicherumverteilungsprozess irgendwie verbessern? Gibt es einen besseren Ansatz für das Objekt-Caching?

Ich habe versucht, einfache Textdateien mit json-serialisierten Daten zu verwenden, aber die Deserialisierung ist zu aufwändig. Ich habe über Binärserialisierung nachgedacht, bin mir aber nicht sicher, ob das überhaupt in klassischem ASP möglich ist.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage