Cache no .NET


por Mauricio Junior em 1/1/2011 0



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 e mais eficaz. 

Hoje o que queria informar e mostrar é a 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.

Usado:
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 maneiras.

Para quem não sabe, 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.

As páginas podem ter 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 atualizada 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 passar o tempo, a página é atualizada. 

Exemplo feito
O exemplo que fiz, mostra que o tempo não é atualizado mesmo clicando no botão refresh.  Após terminar o tempo, a página é atualizada no clique.
Tirando o Cache
O mais clássico é usar o Response.CacheControl. (Code 1).

Response.CacheControl = "Private";
Response.CacheControl = "no-cache";

Code 1
Outra maneira é colocar código dentro do arquivo de configuração: Web.config. (Code 2).

    <system.web>
        <!-- Remove o cache-->
        <httpRuntime sendCacheControlHeader="false"/>
    ... 
Code 2
No Code 2, nenhum cache é atribuído as páginas de todo o projeto. Com ele você pode atribuir o cache em páginas específicas.

Colocando o cache
Agora vou mostrar duas maneiras de atribuir o cache para uma página específica. Peço para que coloque em um arquivo .aspx e não na .masterpage. (Code 3)

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

Code 3
No Code 3, 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. (Code 4).

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);

Code 4
Note que no Code 4, depois de 60 segundos o cache expira. Segue o Code 5 que mostra o exemplo real feito para mostrar que funciona. Code 5

<%@ 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>

Code 5 – Arquivo .ASPX

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();
        }
    }
}

Code 6 – código .CS
Mesmo clicando F5 para atualizar a página, os segundos não serão mudados enquanto os 60 segundos não se passarem. Espero que tenha gostado, fico por aqui e qualquer dúvida pode entrar em contato pelo site.


voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Sistema de Controle de Gasolina Mobile - iGas
Trabalhando com Cookie usando Visual Studio.NET 2005 (parte I)
Criando Help com Visual Studio.NET
Forum utilizando VS 2005 e Ajax
Criando Teclas de Atalho no Windows Form
Microsoft Preview Windows Phone 7 in NYC
Trabalhando com Ipersonate e Web
Evento em Brasília de Tecnologia
A instalação do Visual Studio 2011
Usando o Flash para Desenvolver Game no Microsoft XNA Developer
Usando PopupControlExtender
Fotos do HTC Mozart
Deixando o rodapé fixo
Vídeo - Criando um WebBrowser
Código fonte aberto
Ordenando no DataTable
Abrindo Janela de Forma Modal
ASP.NET 4.0 and Visual Studio 2010 Web Development Beta 2 Overview
Desktop Linux Ubuntu
SQL Dinâmico Compilado
Generics na prática
Definindo o botão padrão.
Channel9 - Soap, OData, Json
Método SHA384
Skyfire - browser mobile
Vírus - Link com Vírus
Vídeo: Série Atlas.NET - Parte II
Sistema que faz busca no google
DateDiff em C#.NET
Deletando todos os arquivos
Cache
Criando, utilizando e agendando sistema de backup
Framework SkyMenu
Documento padrão de desenvolvimento
Criando Email Modelo no Mail - MacBook