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 1https://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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Paginare i risultati con QuickGrid in Blazor
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare QuickGrid di Blazor con Entity Framework
Eseguire operazioni sui blob con Azure Storage Actions
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Supportare la sessione affinity di Azure App Service con Application Gateway
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Migliorare l'organizzazione delle risorse con Azure Policy
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Creare una custom property in GitHub
Scrivere selettori CSS più semplici ed efficienti con :is()