Alguns dias atrás estava lendo alguns artigos sobre desempenho e achei um artigo interessante de
LanceZhang na qual ele fez uma bateria de testes em um
website que possuia controles
ASP.NET AJAX. O artigo você lê na íntegra
aqui. Mas, como se diz na web,
"é old mas é gold!", aproveitei o artigo dele para resumir (tirar o quente) das configurações que ele aplicou e os colocarei aqui. Para quem sabe inglês o artigo é indispensável a leitura, pois lá ele mostra com detalhes os testes realizados bem como os gráficos de desempenho.
Bem, o que ele fez? Encheu uma página de controles AJAX e primeiramente mediu o tráfego na rede averiguando a quantidade de
bytes que são carregados quando feito uma requisição, sendo ela quando dado um
PostBack ou apenas no
Load da página. Quem tem o
Firefox, com certeza deve ter o plugin
Firebug instalado. No
Firebug tem uma sessão de monitoramento de
Rede que analisa as chamadas realizadas.
A primeira coisa notada é o tamanho da página que estava muito grande. O uso do
cache reduzia bruscamente o tamanho da página sem fazer novos carregamentos desnecessários. Juntamente com a compressão do
ScriptResource que reduz ainda mais o tamanho dos
scripts gerados. Então, no
web.config, devemos aplicar a seguinte configuração:
<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="true" enableCaching="true" />
</scripting>
</system.web.extensions>
Faça um novo teste e notará a diferença! Outro aplicação de desempenho é a forma como o
ScriptManager do AJAX é trabalhado. Então é sugerido usá-lo com a seguinte configuração:
<asp:ScriptManager ID="ScriptManagerAjax" runat="server" EnablePartialRendering="false" ScriptMode="Release" LoadScriptsBeforeUI="false">
</asp:ScriptManager>
Cuidado com o
EnablePartialRendering! Faça o teste em sua aplicação com os valores
false ou
true porque a depender do que você usa em seu sistema isso muda muito no comportamento dos
scripts. Por último, você pode usar o
CompositeScript dentro do
ScriptManager para agregar várias chamadas de
scripts em uma só. Veja lá no
site de
LanceZhang como fazer, caso tenha interesse nessa parte e se isso ainda não foi o suficiente.
Agregado a isso, e fora do escopo, você pode usar a compressão/compactação do
ViewState para minimizar o tamanho da página. Você pode encontrar artigos relacionados por aí na
net, mas aconselho dar uma lida nesse
aqui ou
esse a depender de como queira utilizar. Muitas vezes eu prefiro desabilitar o
ViewState... Mais rápido, só que com cautela!