Zaimplementuj buforowanie obiektów w klasycznych wyciekach pamięci ASP
Próbowałem zaimplementować różne implementacje buforowania w klasycznej witrynie ASP, aby odciążyć bazę danych podczas dużego ruchu.
Moje podejście było następujące:
Stwórz globalny obiekt HashTable w global.asa, gdzie później przechowuję obiekty jscript w środku
<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
Daje mi to globalny obiekt HashTable, który w pewnych odstępach czasu zastępuje zawartość tabeli HashTable. Rozmiar będzie się nieznacznie różnić, ale ja jednak wykonuję wszystkie obiekty za pomocą .Remove () i .Add ().
Działa to bardzo dobrze, poza tym, że po pewnym czasie pamięć pamięci aplikacji osiąga wysoki poziom, dając irracjonalne zachowanie sesji. Będzie „zapomniał” sesje, ale nie wywoła OnSessionStart () w global.asa. Dlatego pozostawiając odwiedzających z pustą kolekcją sesji.
Czy mogę jakoś poprawić proces realokacji pamięci? Czy istnieje lepsze podejście do buforowania obiektów?
Próbowałem używać zwykłych plików tekstowych z danymi serializowanymi przez json, ale deserializacja tego jest zbyt kosztowna. Myślałem o serializacji binarnej, ale nie jestem pewien, czy jest to możliwe w klasycznej ASP.