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).

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


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.