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
Scrivere selettori CSS più semplici ed efficienti con :is()
Rendere le variabili read-only in una pipeline di Azure DevOps
Utilizzare Azure Cosmos DB con i vettori
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Ordine e importanza per @layer in CSS
Migrare una service connection a workload identity federation in Azure DevOps
Managed deployment strategy in Azure DevOps
Generare una User Delegation SAS in .NET per Azure Blob Storage
Potenziare la ricerca su Cosmos DB con Full Text Search
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Recuperare l'ultima versione di una release di GitHub
I più letti di oggi
- Validazione automatica dei parametri in Web API con ASP.NET Core 2.1
- Recuperare i file utilizzati di recente in un'Universal App
- Applicare un'animazione al contenuto di un ContentControl nella Universal Windows Platform
- AI&ML Conference 2019 - Milano
- .NET Serverless Day - Online
- Rilasciata la versione Beta 2 di Silverlight 2.0