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 GarciaCache é 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
Valor | Descrição |
Any | Armazena em qualquer um dos lugares a seguir |
Client | Armazena no lado cliente |
Downstream | Armazena no lado servidor de origem. Utilizado em Proxy |
None | Desativa o cache |
Server | Armazena no lado servidor que processou a solicitação |
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