Разница между HttpRuntime.Кэш и HttpContext.Текущий.Кэш?
в чем разница между HttpRuntime.Cache
и HttpContext.Current.Cache
?
3 ответа:
Я нахожу следующую деталь http://theengineroom.provoke.co.nz/archive/2007/04/27/caching-using-httpruntime-cache.aspx
для кэширования я посмотрел в использовании HttpContext.Текущий.Кэш, но после читая другие блоги, я обнаружил, что кэширование с использованием HttpContext использует Строки httpruntime.Кэш, чтобы сделать фактический кэширование. Преимущество использования HttpRuntime напрямую заключается в том, что это всегда доступны, например, в Консольные приложения и в блоке тесты.
С Помощью HttpRuntime.Кэш-это просто. Объекты могут храниться в кэше и индексируются строкой. Вместе с ключ и объект для кэширования других важным параметром является истечение время. Этот параметр задает время перед тем, как объект будет удален из кэш.
кэширование с помощью HttpContext использует HttpRuntime.Кэш для кэширования. Преимущество использования HttpRuntime напрямую заключается в том, что он всегда доступен в консольных приложениях и в модульных тестах.
используя
HttpRuntime.Cache
прост в использовании, чемHttpContext.Current.Cache
. Как уже было сказано, что объекты могут храниться в кэше и индексируются строкой.Также в модульном тесте и консоли доступен.пример использования
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
индексируется ключ параметра находится в кэше. Если это так, он просто возвращает этот объект, если он не запрашивает базу данных. После того, как он извлек документ из базы данных, он затем поместил его в кэш. Если этот метод вызывается снова в течение заданного времени, он получит объект, а не попадание в базу данных.