Реализация объектного кеширования в классическом ASP с утечкой памяти
Я попытался реализовать различные реализации кэширования на классическом сайте ASP, чтобы разгрузить базу данных во время интенсивного трафика.
Мой подход был такой:
Create a global HashTable object in global.asa where I later on store jscript-objects within
<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
Это дает мне глобальный HashTable-объект, который я через определенные промежутки времени заменяю содержимым HashTable. Размер будет немного отличаться, но я, однако, каждый раз делаю .Remove () и .Add () для всех объектов.
Это работает очень хорошо, помимо того факта, что через некоторое время распределение памяти в приложении становится высоким, что приводит к нерациональному поведению сеансов. Это "забудет" сеансы, но не вызывают OnSessionStart () в global.asa. Для этого оставляем посетителей с пустой сессионной коллекцией.
Можно ли как-то улучшить процесс перераспределения памяти? Есть ли лучший подход для объектного кэширования?
Я пытался использовать простые текстовые файлы с сериализованными данными json, но десериализация этого требует много времени. Я думал о двоичной сериализации, но не уверен, возможно ли это даже в классическом ASP.