Ottimizzare le dimensioni degli script di ASP.NET AJAX con lo ScriptManager

di Marco De Sanctis, in ASP.NET 4.0,

Quando si ha la necessità di spingere al massimo le prestazioni della nostra applicazione web, spesso commettiamo l'errore di concentrarci soprattutto su ciò che avviene lato server, dimenticando che anche il semplice trasferimento di dati verso il browser del client ha un suo costo. Ciò è vero in generale, ma assume connotati ancora più determinanti nel momento in cui si considera che, al giorno d'oggi, una sostanziosa frazione del traffico web riguarda dispositivi portatili, in cui le risorse hardware sono notoriamente molto limitate.

In un simile contesto, può aver molto senso limitare la quantità di javascript contenuta in pagina allo stretto indispensabile per il suo funzionamento. Il controllo ScriptManager, ad esempio, di solito inietta una gran quantità di codice javascript per supportare le innumerevoli funzionalità esposte da ASP.NET AJAX, ma se la nostra pagina usa solo UpdatePanel, probabilmente potrebbe risultare vantaggioso evitare di mandare sul browser anche il codice per invocare Web Service.

Dalla versione 4.0 di ASP.NET, è possibile raggiungere un simile risultato impostando la proprietà AjaxFrameworkMode al valore Explicit:

<asp:ScriptManager runat="server" ID="sm" AjaxFrameworkMode="Explicit" />

In questa modalità, infatti, è possibile impostare manualmente quali funzionalità elementari di ASP.NET AJAX (e quindi quali porzioni del relativo javascript) si vogliono attive in pagina, ottimizzando la quantità di codice di scripting emesso. Pertanto, se usiamo solo UpdatePanel, possiamo scrivere qualcosa simile all'esempio in basso:

<asp:ScriptManager runat="server" ID="sm" AjaxFrameworkMode="Explicit">
    <CompositeScript>
        <Scripts>
            <asp:ScriptReference Name="MicrosoftAjaxCore.js" />
            <asp:ScriptReference Name="MicrosoftAjaxComponentModel.js" />
            <asp:ScriptReference Name="MicrosoftAjaxSerialization.js" />
            <asp:ScriptReference Name="MicrosoftAjaxNetwork.js" />
        </Scripts>
    </CompositeScript>
</asp:ScriptManager>

In questo modo, abbiamo la certezza di inviare al browser solo le funzionalità di base di javascript, oltre a serializzazione e gestione delle richieste di rete, le sole veramente indispensabili al funzionamento di un UpdatePanel.

Nella documentazione di ASP.NET linkata a fondo pagina, è presente una tabella che indica le varie componenti che fanno parte di ASP.NET AJAX Client Library, le loro dipendenze e le funzionalità associate. In questo modo, possiamo limitare (anche di molto) la mole di dati scambiati con il client, cosa che si traduce, essendo Javascript codice interpretato, in minori tempi di download e rendering della pagina, oltre che risparmio sulla quantità di banda impegnata dal server.

Per approfondimenti

Utilizzare le funzionalità di unione dei Javascript di ASP.NET 3.5 SP 1
https://www.aspitalia.com/script/952/Utilizzare-Funzionalita-Unione-Javascript-ASP.NET-3.5-SP.aspx

Reducing the Download Size of the Microsoft Ajax Library
http://www.asp.net/ajaxlibrary/Reducing%20the%20Download%20Size%20of%20the%20Microsoft%20Ajax%20Library.ashx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi