Clique aqui para ler todos os artigos desta edição
Performance com cache de página
Daniel Portal Jorge
Este artigo discute |
Este artigo usa as seguintes tecnologias |
· Caching total e parcial de páginas ASP.NET; · Caching de informações do banco de dados; · Caching com SqlDependency; · O controle Substitution. |
ASP.NET 2.0, Visual Studio 2005, SQL Server 2000, SQL Profiler. |
Normalmente, quando desenvolvemos uma aplicação, algo que nos preocupa bastante é a performance. E poucas coisas proporcionam mais ganhos imediatos em performance do que o recurso de caching.
Mas o que é caching afinal? Caching é o nome dado ao processo de armazenar, em um local de acesso rápido, informações que são acessadas com grande freqüência, desonerando o sistema (aplicação, database ou OS) de gerá-los novamente quando requisitados. Não raro, esse local é a memória, que é muito mais eficiente e menos custoso que outros recursos como disco rígido ou bancos de dados.
O ASP.NET conta com dois recursos específicos para caching: o Cache API (que não será abordado neste artigo), para armazenamento de dados arbitrários, como informações de um banco de dados ou informações de um arquivo em disco, e o Cache de página, utilizado para armazenar páginas da Web.
Vamos imaginar o seguinte cenário: você está desenvolvendo uma aplicação Web com um cadastro de clientes e nesse cadastro o tipo do endereço vem de uma tabela do banco (alameda, rua, avenida, praça etc.). Como esses dados são basicamente sempre os mesmos, por que buscá-los no banco toda vez em que a página for requisitada, gastando recursos de rede (para chegar até o banco), do banco (para processar a requisição) e do Web Server (que deverá exibir a nova lista que o banco retornou)? Com o recurso de caching você pode deixar essa lista ou mesmo a página de clientes armazenada de forma estática em memória e ela será simplesmente exibida sempre que requisitada.
Page Output Cache (caching de página)
Uma página pode ser colocada em cache (“cached”) de duas formas: total ou parcialmente. Quando tratamos de cache total de página, entendemos que toda a página, mais seu conteúdo, será gravada de forma estática na memória, e é essa informação que será mostrada para o usuário final quando a página for requisitada.
No caso de cache parcial de página, podemos entender que vamos armazenar apenas uma parcela da página na memória, enquanto o restante da mesma continuará sendo remontada dinamicamente a cada pedido (Request).
Para demonstrar o funcionamento do cache total de página, criaremos uma projeto Web chamado “CachingSample” (como mostra a Figura 1) e pediremos para que a página imprima o valor da hora corrente.
Figura 1. Criando um projeto Web de exemplo
Na Listagem 1, temos o código do arquivo ASPX para a utilização de cache.
Listagem 1. Mostrando a data e a hora em que a página foi executada.
...
<body>
<form id="form1" runat="server">
<div>
<% Response.Write(System.DateTime.Now); %>
< SPAN>div>
< SPAN>form>
< SPAN>body ...