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


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

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

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

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

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

Создание зависимости между кэшированными входными данными страницы и файлом

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

  2. Вызовите метод AddFileDependency в данной кодовой странице. Путь к файлу, в котором создается зависимость, передается в качестве параметра filename метода.

    В следующем примере кода задается файловая зависимость для файла TextFile1.txt. При наличии изменений в файле выходные данные страницы будут удалены из кэша.

    protected void Page_Load(object sender, EventArgs e)
    {
        string fileDependencyPath = Server.MapPath("TextFile1.txt");
        Response.AddFileDependency(fileDependencyPath);
    
        // 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 EventArgs) Handles Me.Load
        Dim fileDependencyPath As String = _
            Server.MapPath("TextFile1.txt")
        Response.AddFileDependency(fileDependencyPath)
    
        ' Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
    End Sub
    
    67z4z916.alert_note(ru-ru,VS.90).gifПримечание.

    Эти методы не удается вызвать из пользовательского элемента управления ASP.NET. Однако в любом пользовательском элементе управления, в котором определяется директива @ OutputCache, можно создать файловую зависимость и присвоить ее свойству Dependency.

Создание зависимости между кэшированными выходными данными страницы и группой файлов

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

  2. Создайте в коде страницы массив String или список массивов ArrayList, содержащий пути к файлам для создания зависимости страницы.

  3. Вызовите метод AddFileDependencies и передайте параметр filenames в массив.

    В следующем примере кода создается массив строк путей к файлам TextFile1.txt и XMLFile1.xml, а также создаются выходные данные страницы, зависящие от двух указанных файлов. Если хотя бы один из файлов был изменен, то выходные данные страницы будут удалены из кэша.

    protected void Page_Load(object sender, EventArgs e)
    {
        string[] fileDependencies;
        string fileDependency1 = Server.MapPath("TextFile1.txt");
        string fileDependency2 = Server.MapPath("XMLFile1.xml");
        fileDependencies = new String[] { fileDependency1, 
            fileDependency2 };
        Response.AddFileDependencies(fileDependencies);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim fileDependencies() As String
        Dim fileDependency1 As String = Server.MapPath("TextFile1.txt")
        Dim fileDependency2 As String = Server.MapPath("XMLFile1.xml")
        fileDependencies = New String() {fileDependency1, _
            fileDependency2}
        Response.AddFileDependencies(fileDependencies)
    End Sub
    

См. также

Задачи

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

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

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

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