HttpRuntime Cache против статического словаря / полей

Каковы основные плюсы и минусы использования HttpRuntime Cache против использования простого статического поля?

Мне нужно хранить данные в рамках всего приложения ASP.NET.

HttpRuntime.Cache["MyData"] = someHashtable;

против

private static System.Collections.Hashtable _myData;
public static System.Collections.Hashtable MyData
{
    get
    {
        if (_myData == null)
        {
            _myData = new System.Collections.Hashtable();
            // TODO: Load data
        }
        return _myData;
    }
}

3 ответа

Решение

Объекты в HttpRuntime.Cache имеют неизвестные периоды истечения, если явно не установлено (это означает, что объекты могут истечь в любое время), тогда как объекты в вашем HashTable жить как живой пул приложений (если вы не удалите запись вручную). HttpRuntime.Cache также позволяет вам устанавливать различные другие характеристики, такие как (необязательно) приоритет элемента кэша и время его истечения.

С кешем вы можете легко установить конечную дату в валидность; объект кеша истекает содержимое автоматически.

также кешу может быть дан приоритет, что менее важным элементам может быть присвоен низкий приоритет, поэтому, когда сервер получает высокую нагрузку, этот элемент удаляется первым

однако, с помощью cahce вы всегда должны приложить дополнительные усилия в модульном тестировании, поскольку httpcontext недоступен во время модульных тестов.

HttpRuntime.Cache позволяет вам указать обратный вызов с истечением срока действия, но со статическим словарем вам придется ждать запроса, чтобы запустить цикл истечения срока действия ваших элементов кэша.

Другие вопросы по тегам