Я попытался реализовать различные реализации кеширования на классическом сайте ASP, чтобы разгрузить базу данных во время интенсивного трафика.
Мой подход был таким:
Создайте глобальный объект HashTable в global.asa, где я позже сохраню jscript-объекты внутри
<object id="SIZE_LIST" progid="System.Collections.HashTable" runat="Server" scope="Application"></object>
Это дает мне глобальный объект HashTable, который я через определенные промежутки времени заменяю содержимым HashTable. Размер будет незначительно отличаться, но я, тем не менее, каждый раз использую .Remove () и .Add () для всех объектов.
Это работает очень хорошо, кроме того, что по прошествии определенного времени объем памяти приложения становится слишком высоким, что приводит к иррациональному поведению сеансов. Он «забудет» сеансы, но не вызовет OnSessionStart () в global.asa. Таким образом, оставляя посетителей с пустой Session-коллекцией.
Могу ли я как-нибудь улучшить процесс перераспределения памяти? Есть ли лучший подход для кеширования объектов?
Я пробовал использовать простые текстовые файлы с json-сериализованными данными, но десериализация этого требует значительных накладных расходов. Я думал о двоичной сериализации, но не уверен, возможно ли это вообще в классическом ASP.