Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Dicas.NET - ASP.NET - Melhorando o cache de GridViews

Veja nesta dica, como melhorar o processamento do cache no GridViews, otimizando o mesmo.

 

ASP.NET - Melhorando o cache de GridViews

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

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.


 





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Tipster .net

Dicas sobre .NET




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da .net Magazine ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03