Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
817
Assunto : ASP.NET
Titulo: Melhorando o cache de GridViews

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A aplicação do @outputCache nas páginas melhora consideravelmente o desempenho do site, fazendo uso de cache de saida.

O @outputcache é bem versátil, podemos determinar os parâmetros que farão com que a página tenha que ser re-processada ou não. Com inúmeros postbacks na página, podemos então configurar o @outputcache corretamente para que o cache seja feito sem prejudicar as funcionalidades.

A forma meio preguiçosa de fazer o @outputcache é determinando a variação por tudo :

<%@outputcache duration="60" varybyparam="*" %>

Desta forma temos um consumo de recursos muito grande. Além disso, alguns objetos, como a gridView, não são otimizados para uma variação como essa, especialmente porque esta variação leva em consideração o viewstate.

A gridview guarda no viewstate informações atuais como por exemplo a página atual. Assim se navegar da página 2 para a 3 o viewstate é um, mas se navegar da 5 para a 3 o viewstate é outro. O cache poderia ser feito, mas não é feito por causa do viewstate.

Para evitar isso podemos indicar parâmetros específicos no varybyparam, veja :

<%@outputcache duration="60" varybyparam="__EVENTTARGET;__EVENTARGUMENT" %>

Isso já melhora a aplicação de cache, mas vai considerar apenas esses dois parâmetros para a aplicação de cache. Se houverem mais objetos na página ou se a gridview estiver permitindo edição, teremos problemas. Seria complicado indicar no varybyparam todos os campos possíveis, um por um, especialmente se a gridview estiver permitindo edição.

Assim o ideal seria fazermos o contrário : excluir do processamento do cache os campos indesejáveis, que são 2 : ViewState e EventValidation.

Para fazer isso podemos utilizar o varybycustom. Com o varybycustom podemos codificar no global.asax a geração da informação pela qual o cache será verificado (processa ou não?). Veja :

<%@outputcache duration="60" varybyparam="none" varybycustom="grid" %>

Public Overrides Function GetVaryByCustomString(ByVal context As System.Web.HttpContext, ByVal custom As String) As String
If custom = "grid" Then
Dim s As String
Dim resultado As String
For Each s In context.Request.Form
If UCase(s).IndexOf("VIEWSTATE") = -1 And UCase(s).IndexOf("EVENTVALIDATION") = -1 Then

resultado &= Request.Form(s)
End If
Next
Return (resultado)
End If
End Function

Neste exemplo o ASP.NET vai consultar o getVaryByCustomString e nós estamos devolvendo a concatenação de todos os parâmetros, exceto os 2 indesejáveis.

Desta forma o processamento do cache será mais otimizado, sendo processamento realmente apenas quando necessário.




Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br