HttpRuntime Cache против статического словаря / полей - PullRequest
8 голосов
/ 03 августа 2011

Каковы основные плюсы и минусы для использования 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 ]

5 голосов
/ 03 августа 2011

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

0 голосов
/ 11 августа 2012

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

0 голосов
/ 03 августа 2011

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

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

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

...