В чем разница между HttpRuntime.Cache
и HttpContext.Current.Cache
?
Разница между HttpRuntime.Cache и HttpContext.Current.Cache?
Ответ 1
Я нахожу следующую деталь из http://theengineroom.provoke.co.nz/archive/2007/04/27/caching-using-httpruntime-cache.aspx
Для кэширования я изучил использование HttpContext.Current.Cache, но после прочитав другие блоги, я обнаружил, что кэширование с использованием HttpContext HttpRuntime.Cache, чтобы выполнить кэширование. Преимущество использования HttpRuntime напрямую заключается в том, что это всегда доступны, например, в Консольные приложения и в блоке тесты.
Использование HttpRuntime.Cache прост. Объекты могут храниться в кеше и индексируются строкой. Наряду с ключ и объект для кэширования другого Важным параметром является истечение срока действия время. Этот параметр устанавливает время перед удалением объекта из Кэш.
Ответ 2
Кэширование с использованием HttpContext использует HttpRuntime.Cache для фактического кэширования. Преимущество использования HttpRuntime напрямую заключается в том, что он всегда доступен в консольных приложениях и в модульных тестах.
Ответ 3
Использование HttpRuntime.Cache
прост в использовании, чем HttpContext.Current.Cache
. Как уже было сказано, объекты могут храниться в кеше и индексируются строкой. Также в unit test и консоли HttpRuntime
это доступно.
Вот пример использования HttpRuntime.Cache
.
public static XmlDocument GetStuff(string sKey)
{
XmlDocument xmlCodes;
xmlCodes = (XmlDocument) HttpRuntime.Cache.Get( sKey );
if (xmlCodes == null)
{
xmlCodes = SqlHelper.ExecuteXml(new dn("Nodes", "Node"), "Get_Stuff_From_Database", sKey);
HttpRuntime.Cache.Add(sKey, xmlCodes, null,
DateTime.UtcNow.AddMinutes(1.0),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Normal, null);
}
return xmlCodes;
}
Что делает этот пример:
Метод GetStuff
принимает строковый параметр, который используется для извлечения набора элементов из базы данных. Сначала метод проверяет, находится ли в кэше XmlDocument
, индексированный ключом параметра. Если это так, он просто возвращает этот объект, если он не запрашивает базу данных. После того, как он достал документ из базы данных, он поместил его в кеш. Если этот метод снова вызван в назначенное время, он получит объект, а не попадет в базу данных.