Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

Uma nova maneira de usar cache com .NET

Recommended Posts

Desde a primeira versão do .NET, muitas coisas foram mudadas. Muitos desenvolvedores usam ainda a maneira antiga sem saber que existe uma maneira nova de se fazer as coisas, com mais eficiência. 

Veremos hoje uma maneira de habilitar cache dentro do aplicativo, tudo isso dentro do código C#.NET ou VB.NET, sem precisar colocar nada dentro do arquivo .ASPX.

  • Ferramenta: Visual Studio .NET 2010
  • Linguagem: C#.NET
  • Plataforma: ASP.NET (web)

Todo o teste pode ser feito usando a plataforma da Microsoft no seu próprio computador. Existem também várias maneiras de fazer uma mesma coisa, vou tentar mostrar algumas delas.

O cache é uma maneira de evitar que a página seja atualizada no servidor buscando dados, ou a busca de informações já contidas na memória do browser. Dessa maneira, as informações são apresentadas rapidamente, diferentemente da primeira entrada na página. É possível manter o cache por algum tempo, horas, dias ou anos; ou simplesmente não ter cache de uma determinada página. Na página desabilitada, a cada atualização. os dados serão atualizados do zero.

Para as páginas que possuem cache, mesmo sendo atualizadas clicando no botão refresh do browser, a página não carrega os dados do zero, consumindo assim menos memória do servidor. Após um tempo, a página é atualizada.

Exemplo

O exemplo que fiz mostra que o tempo não é atualizado mesmo clicando no botão refresh. Após terminar esse tempo, a página é atualizada no clique.

Tirando o Cache

O mais clássico é usar o Response.CacheControl.

Response.CacheControl = "Private";

Response.CacheControl = "no-cache";

Outra maneira é colocar código dentro do arquivo de configuração: Web.config.

    <system.web>

<!-- Remove o cache-->

<httpRuntime sendCacheControlHeader="false"/>

...

No código acima, nenhum cache é atribuído às páginas de todo o projeto. Com ele, você pode atribuir o cache em páginas específicas.

Colocando o cache

Agora veremos duas maneiras de atribuir o cache para uma página específica. Peço que coloque em um arquivo .aspx, e não na .masterpage.

Response.Cache.SetCacheability(HttpCacheability.Public);

Response.Cache.SetMaxAge(new TimeSpan(1, 0, 0));

No código acima, foi atribuído o cache de 1 hora para a página. O segundo zero equivale a minutos, e o terceiro, a segundos.

Outra maneira é adicionar o tempo antes de habilitar o public.

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

Response.Cache.SetCacheability(HttpCacheability.Public);

Veja que agora, depois de 60 segundos, o cache expira. Veja abaixo o código que mostra o exemplo real feito para mostrar que funciona.

Arquivo .ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3_Cashe._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label ID="lblTempo" runat="server"></asp:Label>

</div>

</form>

</body>

</html>

Código .CS

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace WebApplication3_Cashe

{

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

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

Response.Cache.SetCacheability(HttpCacheability.Public);

lblTempo.Text= "Tempo: " + DateTime.Now.ToString();

}

}

}

Mesmo clicando F5 para atualizar a página, os segundos não serão mudados enquanto os 60 segundos não passarem.

Espero que tenha gostado, fico por aqui e qualquer dúvida pode entrar em contato pelo site.

 

http://imasters.com.br/artigo/21616/dotnet/uma-nova-maneira-de-usar-cache-com-net

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bom o artigo, mas lembrando que esse cache habilitado só vale para o visitante atual e o mesmo não é compartilhado entre os visitantes de um site por exemplo.

 

Pra obter melhor desempenho do cache compartilhado é necessário habilitar o CacheDependecy, dependendo do provedor de dados (SQL Server / Oracle e etc) e também com o novo AppFabric em servidores em cluster.

 

Parabéns pela matéria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.