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