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
Utilizzare Azure Cosmos DB con i vettori
Utilizzare Hybrid Cache in .NET 9
Utilizzare QuickGrid di Blazor con Entity Framework
Proteggere le risorse Azure con private link e private endpoints
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Introduzione ai web component HTML
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Scrivere selettori CSS più semplici ed efficienti con :is()
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Creare una libreria CSS universale: Clip-path
Ordinare randomicamente una lista in C#
Ottimizzare le performance usando Span<T> e il metodo Split