Desenvolvimento - ASP. NET

Aprimorando cache do ASP.NET (Parte 2)

Na primeira parte do artigo, vimos o que é cache, algumas diretivas e como funciona a expiração. Agora vamos falar sobre armazenamento de objetos em cache, dependências e classe HttpCachePolicy.

por Marcus Garcia



Na primeira parte do artigo, vimos o que é cache, algumas diretivas e como funciona a expiração. Agora vamos falar sobre armazenamento de objetos em cache, dependências e classe HttpCachePolicy.

Armazenamento de objetos em cache

A classe Cache é utilizada para adicionar objetos ao cache dessa forma melhorando muito o desempenho. Uma bom exemplo seria a uma pesquisa em banco de dados que retorna dados para um Datagrid por exemplo. Armazenar dados em cache para valores retornados de banco de dados é uma prática muito comum. A classe cache possui 3 vantagens sobre o cache de saída.

1º) Você pode armazenar qualquer tipo de objeto
2º) Configuração de dependências de cada item colocado em memória
3º) Expiração variável

Exemplo de utilização com a classe Cache

Observe o método CriarDados, a partir dele são inseridas as ações necessárias, notem que criamos um DataView e depois o recuperamos. A instrução IF verifica se não há nada no Cache e caso não tenha recupera os dados. No Final temos o método Remove que retorna um objeto que possibilita a exclusão se necessário.

Colocando itens em cache

Existem mais 2 formas de se colocar itens em cache que são:

Add

[Visual Basic]
Public Function Add( _
   ByVal key As String, _
   ByVal value As Object, _
   ByVal dependencies As CacheDependency, _
   ByVal absoluteExpiration As DateTime, _
   ByVal slidingExpiration As TimeSpan, _
   ByVal priority As CacheItemPriority, _
   ByVal onRemoveCallback As CacheItemRemovedCallback _
) As Object

[C#]
public object Add(
   string key,
   object value,
   CacheDependency dependencies,
   DateTime absoluteExpiration,
   TimeSpan slidingExpiration,
   CacheItemPriority priority,
   CacheItemRemovedCallback onRemoveCallback
);

Veja mais em :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebcachingcacheclassaddtopic.asp

Insert

[Visual Basic]
Overloads Public Sub Insert( _
   ByVal key As String, _
   ByVal value As Object _
)
[C#]
public void Insert(
   string key,
   object value
);

Veja mais em:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebcachingcacheclassinserttopic1.asp

Dependências de cache

O ASP.NET através da Classe cache, permite você especificar quais itens armazenar, as dependências podem ser criadas em outros caches, diretórios e arquivos.

As dependências permitem que o cache dependa de uma outra fonte.

Exemplo em utilização de dependência

Sub CreateData()
    Dim source As DataView
    Dim objFs As FileStream
    Dim objReader As StreamReader
    Dim ds As New DataSet

    source = Cache("DataView")

    If source Is Nothing Then
        objFs = New FileStream(Server.MapPath _
           ("../day11/books.xml"), FileMode.Open, FileAccess.Read)
        objReader = New StreamReader(objFs)
        ds.ReadXml(objReader)
        objFs.Close()

        Dim objDepend As New _
           CacheDependency(Server.MapPath("../day11/books.xml"))

        source = New DataView(ds.Tables(0))
        Cache.Insert("DataView", source, objDepend, DateTime.Now.AddMinutes(1), TimeSpan.Zero)

        lblMessage.Text = "Data set created explicitly"
    Else
        lblMessage.Text = "Data set retrieved from cache"
    End If
    dgData.DataSource = source
    dgData.DataBind()
End Sub

Classe HttpCachePolicy

O HttpCachePolicy utliza cabeçalhos http para gerenciar o armazenamento em cache de saída de página. A grande diferença entre cache de saída e HttpCachePolicy é que o cache de saída permite controle maior sobre o cache.

[Visual Basic]
NotInheritable Public Class HttpCachePolicy
[C#]
public sealed class HttpCachePolicy

HttpCachePolicy Members

Veja em http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebhttpcachepolicymemberstopic.asp a lista de propriedades e métodos públicos e protected.

CONCLUSÃO

A utilização e aprimoramento de cache em aplicações WEB é muito importante, porém exige muitos cuidados, por exemplo, nunca armazene em cache informações pessoais como senhas de usuários pois será muito fácil recuperar essas informações ou páginas baseadas em horários pois os usuário podem entender que os relógios estão atrasados. Armazene em cache dados frequentemente acessadose de utilização múltipla.

Até a próxima

Visite meu blog: http://br.thespoke.net/MyBlog/marcusgarcia/MyBlog.aspx

[ ] "s a todos !

Marcus Garcia

Marcus Garcia

Marcus Garcia - Foi Microsoft MVP entre 2004 a 2009, faz gestão de Desenvolvimento de Software na Submarino (Grupo B2W), é autor de inúmeros artigos técnicos e livros, além de ter proferido treinamentos e palestras por todo o Brasil. Atualmente, um dos sócios do Centro de Treinamentos Profissionais Actiongroup (www.actiongroup.com.br) . Pode ser encontrado pelo e-mail marcus.garcia@actiongroup.com.br ou pode ser seguido pelo @marcusgarcia