Практическое руководство. Добавление элементов в объект Cache
Обновлен: Ноябрь 2007
Доступ к элементам, которые содержатся в кэше приложения, можно получить с помощью объекта Cache. Новые элементы добавляются в кэш приложения с помощью метода Insert объекта Cache. Перегрузки метода позволяют добавлять элементы с различными параметрами зависимостей, окончания срока действия и уведомлений об удалении. Если с помощью метода Insert добавить в кэш элемент, имя которого совпадает с именем элемента, который уже там содержится, то старый элемент кэша заменяется новым.
Элементы в кэш можно также добавлять с помощью метода Add. Этот метод позволяет задавать все те же параметры, что и метод Insert, однако метод Add возвращает объект, добавленный в кэш. Кроме того, если с помощью метода Add добавляется элемент, имя которого совпадает с именем элемента, который уже содержится в кэше, то старый элемент не заменяется новым, и исключение не создается.
В описанных в этом разделе процедурах иллюстрируются перечисленные ниже способы добавления элементов в кэш прикладной программы.
Непосредственное добавление элемента в кэш путем настройки ключа и значения.
Добавление элементов в кэш с помощью метода Insert.
Добавление элемента в кэш вместе с зависимостью, согласно которой элемент удаляется из кэша при изменении зависимости. Зависимости можно устанавливать на основе других элементов, на основе файлов, а также на основе нескольких объектов.
Добавление в кэш элемента с политикой истечения сроков действия. Кроме возможности задавать зависимости для элемента, можно установить, чтобы его срок действия истек через определенный промежуток времени (скользящий срок действия) или в определенный момент (предельный срок действия). Задавать можно либо один, либо другой параметр, но не оба одновременно.
Добавление элемента в кэш и определение относительного приоритета кэшированного элемента. Относительный приоритет помогает определить, какие элементы следует удалять на платформе .NET Framework; в первую очередь из кэша удаляются элементы с более низким приоритетом, а после них — элементы с более высоким приоритетом.
Добавление элемента путем вызова метода Add.
Кроме показанных здесь зависимостей, можно создать зависимость в таблице SQL Server или зависимость на основе настраиваемой зависимости. Дополнительные сведения см. в разделах Общие сведения о кэшировании в ASP.NET и Кэширование в ASP.NET с помощью класса SqlCacheDependency.
Можно также сделать так, чтобы при удалении элемента из кэша с помощью делегата CacheItemRemovedCallback выдавалось уведомление. Полный пример см. в разделе Практическое руководство. Уведомление приложения об удалении элемента из кэша..
Непосредственное добавление элемента в кэш путем настройки ключа и значения
Элемент добавляется в кэш так же, как добавляется запись в словарь, — путем указания его ключа и значения.
В примере кода ниже к объекту Cache добавляется элемент с именем CacheItem1.
Cache["CacheItem1"] = "Cached Item 1";
Cache("CacheItem1") = "Cached Item 1"
Добавление элементов в кэш с помощью метода Insert
Вызовите метод Insert, передающий ключ и значение элемента, который нужно добавить.
В приведенном ниже примере кода добавляется строка с именем CacheItem2:
Cache.Insert("CacheItem2", "Cached Item 2");
Cache.Insert("CacheItem2", "Cached Item 2")
Для того чтобы добавить элемент в кэш путем указания зависимости, выполните описанные ниже действия
Вызовите метод Insert, который передает экземпляр объекта CacheDependency.
В приведенном ниже примере кода добавляется элемент с именем CacheItem3, зависимый от другого элемента кэша с именем CacheItem2:
string[] dependencies = { "CacheItem2" }; Cache.Insert("CacheItem3", "Cached Item 3", new System.Web.Caching.CacheDependency(null, dependencies));
Dim dependencies As String() = {"CacheItem2"} Cache.Insert("CacheItem3", "Cached Item 3", _ New System.Web.Caching.CacheDependency( _ Nothing, dependencies))
В приведенном ниже примере кода элемент с именем CacheItem4 добавляется в кэш, и для него устанавливается зависимость от файла с именем XMLFile.xml:
Cache.Insert("CacheItem4", "Cached Item 4", new System.Web.Caching.CacheDependency( Server.MapPath("XMLFile.xml")));
Cache.Insert("CacheItem4", "Cached Item 4", _ New System.Web.Caching.CacheDependency( _ Server.MapPath("XMLFile.xml")))
В приведенном ниже примере кода показано, как создать несколько зависимостей. В примере добавляется зависимость ключа от другого элемента кэша с именем CacheItem1 и зависимость от файла с именем XMLFile.xml.
System.Web.Caching.CacheDependency dep1 = new System.Web.Caching.CacheDependency(Server.MapPath("XMLFile.xml")); string[] keyDependencies2 = { "CacheItem1" }; System.Web.Caching.CacheDependency dep2 = new System.Web.Caching.CacheDependency(null, keyDependencies2); System.Web.Caching.AggregateCacheDependency aggDep = new System.Web.Caching.AggregateCacheDependency(); aggDep.Add(dep1); aggDep.Add(dep2); Cache.Insert("CacheItem5", "Cached Item 5", aggDep);
Dim dep1 As CacheDependency = _ New CacheDependency(Server.MapPath("XMLFile.xml")) Dim keyDependencies2 As String() = {"CacheItem1"} Dim dep2 As CacheDependency = _ New System.Web.Caching.CacheDependency(Nothing, _ keyDependencies2) Dim aggDep As AggregateCacheDependency = _ New System.Web.Caching.AggregateCacheDependency() aggDep.Add(dep1) aggDep.Add(dep2) Cache.Insert("CacheItem5", "Cached Item 5", aggDep)
Добавление в кэш элемента с политикой истечения сроков действия
Вызовите метод Insert, который передает абсолютный или скользящий срок действия.
В приведенном ниже примере кода в кэш добавляется элемент с абсолютным сроком действия, истекающим через одну минуту:
Cache.Insert("CacheItem6", "Cached Item 6", null, DateTime.Now.AddMinutes(1d), System.Web.Caching.Cache.NoSlidingExpiration);
Cache.Insert("CacheItem6", "Cached Item 6", _ Nothing, DateTime.Now.AddMinutes(1.0), _ TimeSpan.Zero)
В приведенном ниже примере кода в кэш добавляется элемент со скользящим сроком действия, истекающим через 10 минут:
Cache.Insert("CacheItem7", "Cached Item 7", null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));
Cache.Insert("CacheItem7", "Cached Item 7", _ Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _ New TimeSpan(0, 10, 0))
Добавление в объект Cache элемента с параметрами приоритета
Вызовите метод Insert, указав значение из перечисления CacheItemPriority.
В следующем примере кода в кэш добавляется элемент со значением приоритета High:
Cache.Insert("CacheItem8", "Cached Item 8", null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.High, null);
Cache.Insert("CacheItem8", "Cached Item 8", _ Nothing, System.Web.Caching.Cache.NoAbsoluteExpiration, _ System.Web.Caching.Cache.NoSlidingExpiration, _ System.Web.Caching.CacheItemPriority.High, _ Nothing)
Добавление элемента в кэш с помощью метода Add
Вызовите метод Add, который возвращает объект, представляющий элемент.
В приведенном ниже примере в кэш добавляется элемент с именем CacheItem9 , и переменной CachedItem9 присваивается значение этого элемента.
string CachedItem9 = (string)Cache.Add("CacheItem9", "Cached Item 9", null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Default, null);
Dim CachedItem9 As String = CStr(Cache.Add("CacheItem9", _ "Cached Item 9", Nothing, _ System.Web.Caching.Cache.NoAbsoluteExpiration, _ System.Web.Caching.Cache.NoSlidingExpiration, _ System.Web.Caching.CacheItemPriority.Default, _ Nothing))
См. также
Задачи
Практическое руководство. Удаление элементов из кэша в ASP.NET
Практическое руководство. Уведомление приложения об удалении элемента из кэша
Практическое руководство. Извлечение значений кэшированных элементов