Поделиться через


Cache Класс

Определение

Реализует кэш для веб-приложения. Этот класс не наследуется.

public ref class Cache sealed : System::Collections::IEnumerable
public sealed class Cache : System.Collections.IEnumerable
type Cache = class
    interface IEnumerable
Public NotInheritable Class Cache
Implements IEnumerable
Наследование
Cache
Реализации

Примеры

В следующем примере показана страница, которая показывает пользователям значение, присвоенное элементу в кэше, а затем уведомляет их об удалении элемента из кэша. Он создает RemovedCallback метод с сигнатурой делегата CacheItemRemovedCallback для уведомления пользователей об удалении элемента кэша и использует перечисление CacheItemRemovedReason , чтобы сообщить им, почему он был удален. Кроме того, он использует Cache.Item[] свойство для добавления объектов в кэш и получения значения этих объектов. В методе AddItemToCache он использует Cache.Add метод для добавления элемента в кэш. Чтобы использовать CacheItemRemovedCallback делегат, необходимо добавить элемент в кэш с помощью этого метода или Cache.Insert метода , чтобы ASP.NET могли автоматически выполнять правильные вызовы метода при удалении элемента. Пользовательский RemoveItemFromCache метод использует Cache.Remove метод для явного удаления элемента из кэша, вызывая RemovedCallback метод .

Примечание

Экземпляр Cache, к которому обращается приведенный ниже фрагмент, является членом объекта, наследуемого Page этим примером.

<html>
 <Script runat=server language="C#">
// <snippet2>
    static bool itemRemoved = false;
    static CacheItemRemovedReason reason;
    CacheItemRemovedCallback onRemove = null;

    public void RemovedCallback(String k, Object v, CacheItemRemovedReason r){
      itemRemoved = true;
      reason = r;
    }
// </snippet2>

// <snippet3>
    public void AddItemToCache(Object sender, EventArgs e) {
        itemRemoved = false;

        onRemove = new CacheItemRemovedCallback(this.RemovedCallback);

        if (Cache["Key1"] == null)
          Cache.Add("Key1", "Value 1", null, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove);
    }
// </snippet3>

// <snippet4>
    public void RemoveItemFromCache(Object sender, EventArgs e) {
        if(Cache["Key1"] != null)
          Cache.Remove("Key1");
    }
// </snippet4>
 </Script>
 <body>
  <Form runat="server">
   <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
   <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
  <% if (itemRemoved) {
        Response.Write("RemovedCallback event raised.");
        Response.Write("<BR>");
        Response.Write("Reason: <B>" + reason.ToString() + "</B>");
     }
     else {
// <snippet5>
        Response.Write("Value of cache key: <B>" + Server.HtmlEncode(Cache["Key1"] as string) + "</B>");
// </snippet5>
     }
  %>
 </body>
</html>
<%@ Page Language="VB" %>

<html>
 <Script runat=server>
' <snippet2>
    Shared itemRemoved As boolean = false
    Shared reason As CacheItemRemovedReason
    Dim onRemove As CacheItemRemovedCallback

    Public Sub RemovedCallback(k As String, v As Object, r As CacheItemRemovedReason)
      itemRemoved = true
      reason = r
    End Sub
' </snippet2>

' <snippet3>
    Public Sub AddItemToCache(sender As Object, e As EventArgs)
        itemRemoved = false

        onRemove = New CacheItemRemovedCallback(AddressOf Me.RemovedCallback)

        If (IsNothing(Cache("Key1"))) Then
          Cache.Add("Key1", "Value 1", Nothing, DateTime.Now.AddSeconds(60), Cache.NoSlidingExpiration, CacheItemPriority.High, onRemove)
        End If
    End Sub
' </snippet3>

' <snippet4>
    Public Sub RemoveItemFromCache(sender As Object, e As EventArgs)
        If (Not IsNothing(Cache("Key1"))) Then
          Cache.Remove("Key1")
        End If
    End Sub
' </snippet4>
 </Script>

 <body>
  <Form runat="server">
    <input type=submit OnServerClick="AddItemToCache" value="Add Item To Cache" runat="server"/>
    <input type=submit OnServerClick="RemoveItemFromCache" value="Remove Item From Cache" runat="server"/>
  </Form>
<%
If (itemRemoved) Then
    Response.Write("RemovedCallback event raised.")
    Response.Write("<BR>")
    Response.Write("Reason: <B>" + reason.ToString() + "</B>")
Else
' <snippet5>
    Response.Write("Value of cache key: <B>" + Server.HtmlEncode(CType(Cache("Key1"),String)) + "</B>")
' </snippet5>
End If
%>
 </body>
</html>

Комментарии

Один экземпляр этого класса создается для каждого домена приложения и остается действительным до тех пор, пока домен приложения остается активным. Сведения об экземпляре этого класса доступны через Cache свойство HttpContext объекта или Cache свойство Page объекта .

Примечание

Класс Cache не предназначен для использования за пределами ASP.NET приложений. Он был разработан и протестирован для использования в ASP.NET для обеспечения кэширования для веб-приложений. Для других типов приложений, таких как консольные приложения или приложения Windows Forms, используйте ObjectCache класс .

Конструкторы

Cache()

Инициализирует новый экземпляр класса Cache.

Поля

NoAbsoluteExpiration

Используется в параметре absoluteExpiration при вызове метода Insert(String, Object), чтобы указать, что срок действия этого элемента никогда не истечет. Это поле доступно только для чтения.

NoSlidingExpiration

Используется в качестве параметра slidingExpiration в вызове метода Insert(String, Object) или Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback) для отключения скользящих сроков действия. Это поле доступно только для чтения.

Свойства

Count

Получение числа элементов, сохраненных в кэше.

EffectivePercentagePhysicalMemoryLimit

Получение процента физической памяти, который может быть потреблен приложением до начала удаления элементов из кэша ASP.NET.

EffectivePrivateBytesLimit

Получение количества байт, доступных для кэша.

Item[String]

Возвращает или задает элемент кэша при указанном ключе.

Методы

Add(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)

Добавление указанного элемента в объект Cache с зависимостями, политиками сроков действия и приоритетов, а также с делегатом, которого можно использовать для уведомления приложения при удалении вставленного элемента из Cache.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Get(String)

Получение указанного элемента из объекта Cache.

GetEnumerator()

Получение перечислителя словаря, используемого для итерации в ключевых параметрах и их значениях, содержащихся в кэше.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Insert(String, Object)

Вставка элемента в объект Cache с ключом кэша для ссылки на его расположение с помощью значений по умолчанию, предоставленных перечислением CacheItemPriority.

Insert(String, Object, CacheDependency)

Вставка объекта в Cache, имеющий зависимости файла или ключа.

Insert(String, Object, CacheDependency, DateTime, TimeSpan)

Вставка объекта в Cache с зависимостями и политиками сроков действия.

Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemPriority, CacheItemRemovedCallback)

Вставка объекта в объект Cache с зависимостями, политиками сроков действия и приоритетов, а также с делегатом, которого можно использовать для уведомления приложения при удалении вставленного элемента из Cache.

Insert(String, Object, CacheDependency, DateTime, TimeSpan, CacheItemUpdateCallback)

Вставляет в объект Cache объект с зависимостями, политиками сроков действия и делегатом, который можно использовать для уведомления приложения перед удалением элемента из кэша.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Remove(String)

Удаление указанного элемента из объекта Cache приложения.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

IEnumerable.GetEnumerator()

Возвращение перечислителя, который может осуществлять итерацию в коллекции объектов Cache.

Методы расширения

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к

Потокобезопасность

Данный тип потокобезопасен.

См. также раздел