Como: Verificar a validade de uma página armazenada

Quando uma página em cache é solicitada por um usuário, ASP.NET determina se a saída em cache é ainda válida com base na política de cache que você tenha definido na página.Se a saída é válida, a saída em cache é enviada para o cliente e a página não é reprocessada.Entretanto, o ASP.NET fornece a você a capacidade de executar código durante esta verificação de validação usando uma validação callback, de modo que você possa escrever lógica personalizada para verificar se a página é válida.A validação callback permite-lhe invalidar páginas armazenadas em cache fora do processo normal de uso de dependências de cache.

Para verificar a validade de uma página armazenada em cache programaticamente

  1. Defina um manipulador de eventos do tipo HttpCacheValidateHandler e inclua código que verifica a validade da resposta da página armazenada em cache.

    O manipulador de validação deve retornar um dos seguintes valores HttpValidationStatus:

    • Invalid   Indica que a página armazenada em cache é inválida, a página é removida do cache, e a solicitação é tratada como perda de cache.

    • IgnoreThisRequest   Faz com que a solicitação seja tratada sistema autônomo ignorado de cache. A página é processada novamente, mas a página armazenada em cache não é invalidada.

    • Valid  Indica que a página armazenada na cache é válida.

    O exemplo de código a seguir ilustra um manipulador de validação chamadoValidateCacheOutput que determina se a variável sequência de caracteres de consulta status contém os valores "invalidar" ou "ignorar";.Se o valor de status é "invalidar", o método retorna Invalid e a página é invalidada na cache.Se o valor de status é "ignorar", o método retorna IgnoreThisRequest e a página é deixada no cache, mas uma nova resposta é gerada para este pedido.

    public static void ValidateCacheOutput(HttpContext context, Object data,
            ref HttpValidationStatus status)
    {
        if (context.Request.QueryString["Status"] != null)
        {
            string pageStatus = context.Request.QueryString["Status"];
    
            if (pageStatus == "invalid")
                status = HttpValidationStatus.Invalid;
            else if (pageStatus == "ignore")
                status = HttpValidationStatus.IgnoreThisRequest;
            else
                status = HttpValidationStatus.Valid;
        }
        else
            status = HttpValidationStatus.Valid;
    }
    
    Public Shared Sub ValidatePage(ByVal context As HttpContext, _
            ByVal data As [Object], ByRef status As HttpValidationStatus)
        If Not (context.Request.QueryString("Status") Is Nothing) Then
            Dim pageStatus As String = context.Request.QueryString("Status")
    
            If pageStatus = "invalid" Then
                status = HttpValidationStatus.Invalid
            ElseIf pageStatus = "ignore" Then
                status = HttpValidationStatus.IgnoreThisRequest
            Else
                status = HttpValidationStatus.Valid
            End If
       Else
           status = HttpValidationStatus.Valid
       End If
    End Sub
    
  2. De um dos eventos de ciclo de vida de página (tais como o eventos da página Load), chama o método AddValidationCallback, passando como o primeiro argumento o manipulador de eventos que você definiu na etapa 1.

    O exemplo de código a seguir define o método ValidateCacheOutput para ser o manipulador de validação.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.AddValidationCallback(
            new HttpCacheValidateHandler(ValidateCacheOutput),
            null);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load
    
        Response.Cache.AddValidationCallback( _
            New HttpCacheValidateHandler(AddressOf ValidatePage), Nothing)
    End Sub
    

Consulte também

Conceitos

Cache de páginas ASP.NET