Como: Cache de saída de página com dependências de arquivo

Às vezes convém remover uma página do cache de saída quando um arquivo muda.Por exemplo, você pode ter uma página que obtém seu conteúdo de um relatório de processo intensivo que produz um arquivo XML como saída.A página precisará ser reprocessada somente se o arquivo XML for alterado.Para limitar o reprocessamento a apenas os horários quando ele é necessário, você pode usar a política de cache da marca dependente de um único arquivo.Se necessário, você pode fazer a página em cache dependente de mais de um arquivo.

Observação:

Você pode remover explicitamente qualquer página do cache de saída chamando o método RemoveOutputCacheItem.Você pode fazer isso, de um controle servidor ASP.NET personalizado, ou de uma página, dependendo das necessidades do seu aplicativo a partir do arquivo Global.asax.

Para tornar a saída de página em cache dependente de um arquivo

  1. Especifique as configurações para saída da página em cache declarativamente ou através de programação.Para obter mais informações, consulte Como: conjunto valores de expiração para ASP.NET página cache, Definindo a Cacheabilidade de uma Página e Armazenando Múltiplas Versões de uma Página.

  2. Na página de código, chame o método AddFileDependency.Como parâmetro do método filename, passe o caminho do arquivo do qual você está tentando criar uma dependência.

    O exemplo de código a seguir define uma dependência de arquivo em um arquivo TextFile1.txt.Quando o arquivo for alterado, a saída da página será removida do cache.

    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
    
    Observação:

    Você não pode usar esses métodos de um controle de usuário ASP.NET.Contudo, em qualquer controle de usuário que especifica a diretiva @ OutputCache você pode criar uma dependência de arquivo e atribuí-la a propriedade Dependency.

Para tornar a saída da página em cache dependente de um grupo de arquivos

  1. Especifique as configurações para saída da página em cache declarativamente ou através de programação.Para obter mais informações, consulte Como: conjunto valores de expiração para ASP.NET página cache, Definindo a Cacheabilidade de uma Página e Armazenando Múltiplas Versões de uma Página.

  2. Na página de código, crie um vetor String ou um ArrayList que contenha os caminhos dos arquivos para fazer a página dependente.

  3. Chame o método AddFileDependencies e como parâmetro filenames, passe o vetor.

    O exemplo de código a seguir cria uma matriz de sequência dos caminhos de arquivo para os arquivos TextFile1.txt e XMLFile1.xml e torna a saída da página dependente nos dois arquivos.Se um dos arquivos for modificado, a saída da página será removida do cache.

    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
    

Consulte também

Tarefas

Como: conjunto por programação Cacheability da página

Conceitos

Cache de páginas ASP.NET

Definindo a Cacheabilidade de uma Página