Cache no ASP.NET

Usando cache de página com OutputCache

Parte II - VaryByParam

Na Parte I deste artigo (sugiro que leia essa parte antes para entender o exemplo aqui apresentado - www.portalwebmobile.com.br/Colunistas/GuintherPauli/02_outputcache.asp), conhecemos a diretiva OutputCache do ASP.NET, usada para criar cache de saída de páginas aspx. Nesta segunda parte, vamos conhecer a opção VaryByParam usada juntamente com a diretiva.

Parâmetros

Uma das principais formas de trocar informações entre páginas ASP.NET é passando parâmetros na própria URL, como no exemplo a seguir, que mostra informações sobre um produto com base no campo CodProduto passado por parâmetro:

 

http://localhost/WebApplication1/pgproduto.aspx?CodProduto=2.

 

Imagine que a cache fosse habilitada para a página pgproduto.aspx. Como o conteúdo da página varia de acordo com o parâmetro, teríamos alguns problemas. É preciso parametrizar a cache de acordo com o CodProduto, existindo uma cache para cada variação do parâmetro.

O atributo VaryByParam permite fazer isso, e aceita três possíveis valores:

·        None: desabilita o recurso;

·        * (Asterisco): cria uma cache para cada parâmetro passado;

·        : atribui um nome para a variável que receberá o valor do parâmetro para criação da página em cache.

Altere o valor do parâmetro Duration de OutputCache para “120” (dois minutos) e o valor do parâmetro VaryByParam para “*”, conforme o código a seguir:

 

 

Altere o código que escrevemos no evento Load do formulário para:

 

Response.Write("Olá " + Request.QueryString["nome"] +

    ", a data/hora no servidor Web é " +

    System.DateTime.Now.ToString());

 

Execute a aplicação e quando a página estiver carregada passe o parâmetro nome através da URL:

 

http://localhost/WebApplication1/WebForm1.aspx?nome=guinther

 

Com isso o ASP.NET monta uma cache no servidor com base no parâmetro passado. Carregue novamente a página com outro parâmetro, como no exemplo:

 

http://localhost/WebApplication1/WebForm1.aspx?nome=pauli

 

Observe que um novo horário foi assumido, pois o parâmetro foi modificado. O ASP.NET criou uma segunda cache. Agora altere o parâmetro novamente, informando o primeiro parâmetro utilizado anteriormente (“nome=guinther”). Perceba que o horário assumido é o mesmo que você viu na primeira vez.

 

 

Guinther Pauli é Bacharel em Sistemas de Informação (Unifra – RS), autor de mais de 100 artigos publicados e do livro “Delphi – Programação para Banco de Dados e Web”. É MCP, MCAD (C#, ASP.NET) e Borland Delphi for * Certified. É editor geral da revista ClubeDelphi e Editor Técnico da Revista WebMobile Magazine. Pode ser contatado pelos endereços guinther_pauli (at) hotmail.com e guinther (at) devmedia.com.br – Blog: br.thespoke.net/MyBlog/Guinther/MyBlog.aspx