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