Desenvolvimento - ASP. NET

Aprimorando cache do ASP.NET

Cache é uma técnica comumente utilizada para aprimorar o desempenho de armazenamento de dados na memória...

por Marcus Garcia



O que é cache?

Cache é uma técnica comumente utilizada para aprimorar o desempenho de armazenamento de dados na memória. A função do cache é armazenar as informações de forma simples e rápida para sua recuperação.

O Cache pode ser testado agora mesmo, neste instante, clique em F5 do seu teclado, note que a segunda vez vai ser mais rápida a recuperação dos dados devido ao armazenamento em cache das imagens ou páginas, com isso podemos concluir que o cache torna o acesso mais rápido.

Como saber se os dados em cache estão atualizados?

Já que o primeiro local a ser verificado após a solicitação da página é o cache como saber se o conteúdo desse cache é o mais atualizado? Para responder essa pergunta precisamos entender as duas localizações de cache do ASP.NET - Lado Cliente e Lado Servidor.

Cache Cliente

No cache de navegador (lado cliente) todos os dados são armazenados no computador que requisitou a página e são administrados totalmente pelo navegador.

Cache Servidor

No cache do lado Servidor os métodos, controle e benefícios são inúmeros. Vamos ver a seguir alguns detalhes.

Sempre que uma página ASP.NET é compilada fica armazenada em cache até a CLR (Common Language Runtime) torná-la inválida por ter detectado uma nova versão dessa mesma página. Outra consideração importante diz respeito à primeira vez que a aplicação é iniciada pelo ASP.NET, todas as configurações do web.config são carregadas e com isso torna-se lento e demorar um tempo relativamente grande dependendo do tamanho do aplicativo.

Em ASP.NET existem dois processos de saída de cache; De Saída e de dados. Esses processos são responsáveis em armazenar todo e qualquer conteúdo gerado por páginas ASP.NET. Para utilizar cache de saída é necessário configurá-lo via código da seguinte forma:

- Vá para modo design de página e digite logo abaixo da tag

<%@ Page Language="VB" %>

<%@ OutputCache Duration="50" Location="none"  %>

Com a implementação do código acima estamos orientando a diretiva de página OutputCache a ativar o armazenamento em cachê por 50 segundos e logo após o conteúdo será expirado.

Parâmetros da diretiva OutputCache

Utilizando o cache de saída podemos ter um ganho significativo de performance, veja um exemplo abaixo.

<%@ Page Language="VB" %>

<%@ OutputCache Duration="50" Location="none"  %>

<script runat="server" >

sub Page_Load(obj as object, e as eventargs)

	lblMessage.text = " Bem vindo! O horário atual é Date.Time.Now.ToString("T")

end sub

</script>


<html><body>

<font size="3"> Aprendendo sobre Cache</font>
<asp:label id="lblMeensagem" runat ="server"/>

</html></body>
Cache em páginas ASP.NET, muito mais que um mecanismo de expiração de páginas...

Através do cache de saída, podemos comparar querystrings que uma página esta recebendo para determinar o que vai para o cache.

<%@ Page Language="VB" %>

<%@ OutputCache Duration="50" Location="none"  %>

<script runat="server" >

sub Page_Load(obj as object, e as eventargs)
  lblMessage.text = " Bem vindo " & Request.Params("id") & " ! O horário atual é Date.Time.Now.ToString("T")
end sub

</script>


<html><body>

<font size="3"> Aprendendo sobre Cache</font>
<asp:label id="lblMeensagem" runat ="server"/>

</html></body>

Após o ASP.NET ler a querystring é verificado se a página solicitada é diferente da que esta em cache, se for é registrada a perda de cache e então executa novamente a página e armazena a nova versão em cache.

Controle de usuário em cache

Podemos armazenar em cache partes de uma página. Essas partes são conhecidas como Cache de fragmento. Esse método é muito importante para armazenar partes de sua página. Por exemplo, um controle de login, pode ser armazenado em cache, vejam o exemplo anterior implementado.

<%@ Page Language="VB" %>

<%@ Register TagPrefix="MyControl" TagName="View" Src="controle.ascx" %>

<script runat="server" >

sub Page_Load(obj as object, e as eventargs)
lblMessage.text = " Última visualização as " & Date.Time.Now.ToString("T")
end sub

</script>


<html><body>

<font size="3"> Aprendendo sobre Cache</font>
<asp:label id="lblMeensagem" runat ="server"/>

</html></body>

O assunto cache em ASP.NET é muito extenso, temos que falar ainda de armazenamento de objetos em cache, dependências, classe HttpCachePolicy, manipulação, variação de mecanismos e outros recursos.

Visite meu blog : http://br.thespoke.net/MyBlog/marcusgarcia/MyBlog.aspx.

[ ] "s a todos !

Marcus Garcia

Marcus Garcia

Marcus Garcia - Foi Microsoft MVP entre 2004 a 2009, faz gestão de Desenvolvimento de Software na Submarino (Grupo B2W), é autor de inúmeros artigos técnicos e livros, além de ter proferido treinamentos e palestras por todo o Brasil. Atualmente, um dos sócios do Centro de Treinamentos Profissionais Actiongroup (www.actiongroup.com.br) . Pode ser encontrado pelo e-mail marcus.garcia@actiongroup.com.br ou pode ser seguido pelo @marcusgarcia