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


Практическое руководство. Кэширование вывода страницы с помощью зависимостей ключа кэша

Обновлен: Ноябрь 2007

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

t1d120ks.alert_note(ru-ru,VS.90).gifПримечание.

Можно явным образом удалить любую страницу из кэша вывода вызовом метода RemoveOutputCacheItem. Это можно сделать из файла Global.asax, из пользовательского серверного элемента управления ASP.NET или из страницы в зависимости от того, что требуется для работы приложения.

Создание кэшированного вывода страницы, зависящей от другого элемента кэша

  1. На странице укажите параметры кэша декларативно или программно. Дополнительные сведения см. в разделах Практическое руководство. Задание срока действия для кэширования страниц ASP.NET, Задание возможности кэширования страницы и Кэширование нескольких версий страницы.

  2. На странице кода вызовите метод AddCacheItemDependency. В качестве параметра cacheKey передайте имя элемента кэша, чтобы создать зависимость.

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

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.AddCacheItemDependency("ProcessIntensiveReport");
    
        // Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(true);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.AddCacheItemDependency("ProcessIntensiveReport")
    
        ' Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
    End Sub
    
    t1d120ks.alert_note(ru-ru,VS.90).gifПримечание.

    Нельзя вызвать метод AddCacheItemDependency в пользовательском элементе управления ASP.NET. Однако в любом пользовательском элементе управления, который определяет директиву @ OutputCache, можно создать объект CacheDependency, описывающий зависимость ключа кэша, и назначить ее свойству Dependency объекта UserControl.

См. также

Задачи

Практическое руководство. Задание возможности кэширования страницы программными средствами

Основные понятия

Кэширование страниц ASP.NET

Задание возможности кэширования страницы