Разница между 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, индексированный ключом параметра. Если это так, он просто возвращает этот объект, если он не запрашивает базу данных. После того, как он достал документ из базы данных, он поместил его в кеш. Если этот метод снова вызван в назначенное время, он получит объект, а не попадет в базу данных.