Bom, estou disposto a mostrar na prática como utilizar “cache" em sistemas ASP.NET, ou seja, sistemas e sites WEB. Nos dias de hoje, com novas ferramentas e controles da ferramenta da Microsoft chamada Visual Studio.NET, o sistema do tipo WEB tem entrado mais no mercado com aceitação de clientes; tanto para intranet ou internet.

 

Problema

 

Com o uso popular da internet, a briga para carregar o site na tela mais rápido possível em um custo baixo é prioridade, ou seja, mesmo com a conexão do usuário final seja lenta, o site deve aparecer no browser do usuário final de uma forma rápida e eficaz. Nem todo usuário possui uma conexão banda larga em casa, com isso existe demora do carregamento do site ou sistema. Na demora excessiva da funcionalidade, a empresa poderá perder clientes e vendas dependendo do estabelecimento.

 

Solução

 

O recurso no .NET chamado “cache” veio para tirar todo esse problema de lentidão no sistema ou site. Para páginas que possuem os mesmos valores e não têm problemas para manter os dados em “cache”, não precisando ir ao banco de dados; essa solução é ideal e objetiva para você desenvolvedor. Pode melhorar consideravelmente toda página, principalmente para páginas complicadas que precisam ir ao banco de dados a todo o momento e mostrar ao usuário as informações do banco de dados.

  

 

O “cache” pode ser feito de duas maneiras no ASP.NET: (Referência c-1.1)

 

 

- Uma com código dentro da página ASPX.CS ou ASPX.VB;

- Outra colocando uma tag no cabeçalho do arquivo ASPX.

 

Referência: c-1.1

 

Codificando

 

Primeira forma:

Ativando o “cache” em 10 segundos. (Referência c-1.2)

 

 

    protected void GetCache()

    {

        //Uso do cache de saída do servidor

        Response.Cache.SetCacheability(HttpCacheability.Server);

 

        //Mostra que a página ficará ativa por 10 segundos

        //mantendo o cache

        Response.Cache.SetExpires(DateTime.Now.AddSeconds(10));

    }

 

Referência: c-1.2

 

Note que criei um método chamado GetCache(), não recebe valores, não envia valores e é protegido para aquela classe específica. Ele apenas pega o uso do “cache" no servidor, ou seja, se estiver outro usuário no site ou sistema navegando, será detectado automaticamente e o sistema usará o mesmo “cache", dados já exibidos para o próximo usuário que entrar, esse tempo é de 10 segundos. Com isso não precisará ir ao banco de dados.

 

Esses 10 segundos podem ser alterados para quantos segundos quiser, geralmente não é bom colocar muito tempo, tente colocar um tempo legal e ideal para seu sistema e site, tudo exagerado demais não é bom.

 

Depois de criar o método, basta apenas acrescentar dentro do método Load da página principal .ASPX. (Referência c-1.3)

 

 

    protected void Page_Load(object sender, EventArgs e)

    {

        GetCache();

        if (!Page.IsPostBack)

        {

            preencheDataList();

        }

    }

Referência: c-1.3

 

O método foi acrescentado junto ao método Page_Load da página, com isso resolve muito o problema de lentidão e carregamento das informações.

 

 

 

 

Segunda forma:

 

A outra maneira de ativar o “cache" da página, ou seja, “cache" de saída é alterar o cabeçalho da página específica. (Referência c-1.4)

 

 

   <%@ OutputCache Duration="10" VaryByParam="None" %>

 

Referência: c-1.4

 

 

 

Exemplo na página: (Refência c-1.5)

 

Referência: c-1.5

 

 

Os atributos e valores OutPutCache Duration e VaryByParam devem estar especificados corretamente na página.

 

OutPutCache Duration: significa quanto tempo a página será armazenada, esse tempo é medido em segundos;

 

VaryByParam: significa que quando houver um parâmetro a ser passado do tipo “query string”, o mesmo pode ser colocado no atributo. Dessa forma será feito “cache" da página mesmo que haja parâmetros que receba ou não. No meu caso, não precisarei de parâmetro, coloquei “none”.

 

 

 

Dúvida

 

Qual das duas formas usar ? Bom fazendo o teste, os dois tipos funcionam corretamente para a função e desempenho. A minha opinião e preferência é usar a primeira opção mostrada, não gosto de mexer muito na página .ASPX, gosto mesmo de codificar em ambiente “code behing”; mesmo que da outra forma também funcione corretamente.

 

 

 

 

Livros publicados:

 

 

 

Espero ter ajudado de alguma forma.

Qualquer dúvida, favor entrar em contato pelo e-mail: mauricio@aspneti.com.

 

Mauricio Junior

www.aspneti.com

www.mauriciojunior.org