ASP.NET- Reduzindo o tamanho das páginas para ganhar desempenho
O desempenho de uma aplicação é um fator muito importante que deve ser levado em conta desde as fases inicias do desenvolvimento. Para aplicações web este fator é ainda mais crítico de forma que existem procedimentos e normas de condutas que levam em conta o fator desempenho nos pequenos detalhes da aplicação.
Uma das formas aumentar o desempenho em uma aplicação web é reduzir o tamanho das páginas visto como elas trafegam entre o cliente e o servidor, quando menor forem, menor será a memória e o tráfego de rede envolvido.
Em aplicações ASP .NET o ViewState é usado para manter o estado de uma página entre as requisições efetuadas sendo que o estado de cada controle da página é reconstruído após o postback para o servidor. Devido a esta habilidade para manter o estado, quando uma página é postada de volta ao servidor, o uso do ViewState reduz a quantidade de código que você tem que escrever, pois você não tem mais que extrair valores do formulário postado para processamento ou redefinir os valores dos controles quando você exibe a página novamente como ocorria com a linguagem ASP.
A propriedade ViewState do
ASP.NET para páginas e controles individuais tem duas
finalidades: manter o estado entre solicitações e
armazenar valores personalizados em um campo oculto
protegido e resistente a violações. Ref.: ASP.NET State Management: View State.
|
Embora o uso do ViewState reduza de forma significativa o código, ele tem um custo. Todos os dados requeridos para manter o estado dos controles é armazenado em um controle na página HTML. Dependendo do número e tipos de controles que você usar em suas páginas , o ViewState pode ficar bem grande resultando assim em uma perda de desempenho pois os dados do ViewState é enviado para o navegador quando a página é renderizada e retornada para o servidor como parte de um postback.
O desempenho é afetado pela geração do ViewState ,quando a página é renderizada pela primeira vez e também pela transferência de dados do ViewState para e a partir do navegador durante os postbacks. A seguir temos uma visão padrão de utilização do ViewState:
<input type="hidden" name="__VIEWSTATE" value="dDwtOTQzNjg3NDE1O3Q8O2w8aTwxPjs"/>
Uma solução é desabilitar o ViewState de forma criteriosa após fazer uma análise de cada página da aplicação e de cada um dos controles usados afim de determinar se o controle ViewState é necessário. Assim os procedimentos a serem adotados para atingir este objetivo são:
Um dos critérios que você pode usar é verificar se uma determinada página é postada para ela mesma. Se ela não possuir um AutoPostBack então é forte candidata a ter o seu ViewState desabilitado para a página inteira. Isto é feito definindo o atributo EnableViewState na diretiva @Page como False:
<%@ Page Language="VB" MasterPageFile="~/Macoratti.master" AutoEventWireup="false" CodeFile="Teste.aspx.vb" Inherits="Teste.Macoratti" Title="Desempenho com ViewState" EnableViewState="false" %>
Você também pode obter o mesmo resultado usando o evento Load da página e atribuindo o valor False a esta propriedade:
Page.EnableViewState
= False
Se a página possui um postback para ela mesma você precisa
verificar cada um dos controles da página para determinar se o
estado da informação é requerida pelo controle em um postback.
Se a informação do estado não é necessária a propriedade ViewState
para este controle pode ser desabilitada.
A seguir temos um exemplo onde desabilitamos a propriedade para o controle Content em um página:
<asp:Content
ID="Macoratit" Runat="server"
ContentPlaceHolderID="Macoratti" enableviewstate="false">
A ASP.NET 2.0 removeu a informação necessária para controlar o
postaback do ViewState; a informação sobre o postback agora
esta contida no ControlState. Esta separação
fornece maior flexibilidade para desabilitar o ViewState e assim
reduzir o tamanho das páginas.
Esta é uma das muitas atitudes que você pode tomar para melhorar o desempenho de sua aplicação.
Aguarde em breve mais dicas sobre desempenho em aplicações ASP .NET.
Referências:
José Carlos Macoratti