mardi 10 mai 2011

Optimisation des contrôles ASP.NET Ajax Control Toolkit

Ayant eu quelques problèmes de performance avec les contrôles Ajax Toolkit, je voudrais faire par de quelques informations pour optimiser leurs utilisations afin d'avoir un site web performant :).

Exemple de lourdeur si on ne fait rien : Mettre quatre control HTML Editor sur la même page et constater le temps de chargement de la page. Cela prend n fois plus de temps :(.

Sans blabla, voici la solution.

Deux étapes importantes :

  • dans le web.config il faut ajouter les lignes suivantes :
  
    
      
    
  
  • dans le master page ou une page web spécifique les lignes suivantes :
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
  
  
  


Il existe une troisième optimisation, mais elle nécessite de sniffer la liste des fichiers javascripts et de les déclarer dans le web.config de façon à ce qu'ils soit charger en fonction des besoins.
Je n'aime pas trop cette solution car elle impose 2 restrictions:

  1. La connaissance et la maintenance de cette liste
  2. Une limitation de 1024 caractères pour la liste.

Mais, il est facilement possible de faire autant de groupe que l'on veux pour inclure tout les fichiers (il y en a environ 45 pour le HTML Editor). Cela implique 4groupes avec 12 à 15 références chancun. Si on peut l'éviter, le mieux est de faire sans.

Pour info, la liste des fichiers javascript s'obtient avec le ScriptReferenceProfiler (pour télécharger la dll voir les liens au bas du post)

et la déclaration suivante dans la page web à sniffer :

<%@ Register Assembly="ScriptReferenceProfiler" Namespace="ScriptReferenceProfiler"    TagPrefix="microsoft" %> 
 

Ne pas oublier de mettre en référence la DLL dans le projet : ScriptReferenceProfiler.dll

Et en final, mettre la liste des fichiers dans le web.config avec les lignes suivantes :

    
       
          
             
             
             
          
       
    


et autant de ScriptManagerProxy qu'il faut :

  
     
        
           
            
        
     
  

Pour plus d'information, consulter les liens suivants :

http://lancezhang.wordpress.com/2008/11/15/aspnet-ajax-performance/
http://ajaxcontroltoolkit.codeplex.com/releases/view/65800
http://aspnet.codeplex.com/releases/view/13356

Membres