terça-feira, 12 de abril de 2011

Capítulo 2: Using Master Pages, Themes, and Caching!!! Lição 3: Caching

Enfim a última lição do 2º Capítulo, Caching!!

Eu ja tive a oportunidade de trabalhar em projetos que usaram ambos tipos de cache explicados nesta lição. Confesso que achei mais fácil a prática do que a teoria, por isso devo escrever pouco sobre este assunto.

O asp.net facilita o uso de Cache, sendo necessário poucas linhas de código para implentar. Existem dois tipos de cache no asp.net:
  • Application caching: representa uma coleção de dados armazenados em memória e que são removidos conforme configurados por tempo ou alguma dependência, ou em ultimo caso quando atingir o limite da memória.
  • Page output caching: acredito ser o mais simples e por isso o mais usado, o asp.net permite salvar uma página, ou até mesmo uma parte de uma página como um controle, para reduzir o tempo de resposta quando esta página for solicitada.
Quando se usa o Application caching o cache é dividido por todos na aplicação, pode ser armazenado qualquer coisa, desde uma string, ou até mesmo uma classe populada, datatable e etc, cabe aqui um parênteses, tome cuidado com o tamanho do objeto que colocam em cache devido a memória.

A codificação para trabalhar com o objeto cache é igual a trabalhar com uma sessão, a forma mais simples basta informar a chave e o valor. Ex:

Cache["Greeting"] = "Hello, cache!";
if (Cache["Greeting"] != null)
  Label1.Text = (string)Cache["Greeting"];
else
  Label1.Text = "Hello, world!";


Existe também o método insert que possui mais parâmetros para você configurar seu objeto cache. O método Insert possui os seguintes parâmetros:
  • dependencies: é possível configurar uma dependência para manter seu objeto cache. Funciona como uma trigger.
  • absoluteExpiration: É um DateTime que define o momento exato que o cache é expirado. Caso não queria definir esta data basta informar: System.Web.Caching.Cache.NoAbsoluteExpiration
  • slidingExpiration: é um objeto TimeSpan, onde você informa depois do último acesso quanto tempo irá demorar para seu cache expirar. O contador é zerado toda vez que o cache é acessado. Se não quiser informar, basta: System.Web.Caching.Cache.NoSlidingExpiration
  • priority: é o nível de prioridade do cache quando houver a necessidade de remoção de conteúdo, como em um possível estouro de memória, o priority é um enumeration e possui as seguintes opções: Low, BelowNormal, Normal (valor padrão), AboveNormal, High e NotRemovable.
Além dessas opções o objeto cache possui também o evento onRemoveCallback que é disparado quando o objeto é removido do cache.

Page output caching 

Para adicionar uma página ao cache para diminuir a carga ao servidor  melhorar o desempenho do site perando o usuário, é possível colocar suas páginas no cache. Para isso basta adicionar a diretiva @OutputCache em sua página. Caso tenha interesse em armazenar somente uma parte da página, você deve separar esta parte em um Web User Controle e desta forma armazenar este controle no cache.

A diretiva OutputCache possui os seguintes parâmetros:
  • Duration: É o número de segundos do cache. É o único parâmetro obrigatório;
  • Location
  • CacheProfile
  • NoStore
  • Shared
  • VaryByParam
  • VaryByControl
  • SqlDependency
  • VaryByCustom
  • VaryByHeader
Por enquanto é isso!!

Abraços...

Nenhum comentário:

Postar um comentário