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.
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.
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
Abraços...