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 GarciaArmazenamento 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