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
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Aggiungere interattività lato server in Blazor 8
Eseguire le GitHub Actions offline
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Evitare il flickering dei componenti nel prerender di Blazor 8
Usare il versioning con i controller di ASP.NET Core Web API
Short-circuiting della Pipeline in ASP.NET Core
Usare un KeyedService di default in ASP.NET Core 8
Creare alias per tipi generici e tuple in C#
Utilizzare il trigger SQL con le Azure Function
Installare le Web App site extension tramite una pipeline di Azure DevOps
Eseguire attività pianificate con Azure Container Jobs
I più letti di oggi
- Sblocca le performance della tua applicazione con .NET 8
- Utilizzare WebAssembly con .NET, ovunque
- Gestire la cancellazione di una richiesta in streaming da Blazor
- L'evoluzione di Blazor in .NET 8
- gRPC con .NET
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Blazor: Security
- Utilizzare QuickGrid di Blazor con Entity Framework