Ottimizza le dimensioni del DOM

Connor Clark
Connor Clark

Data di pubblicazione: 8 ott 2025

Un DOM di grandi dimensioni può aumentare la durata dei calcoli di stile e dei layout, con ripercussioni sull'adattabilità della pagina. Un DOM di grandi dimensioni aumenta anche l'utilizzo di memoria.

Un albero DOM profondo non è di per sé un problema di prestazioni, ma è un sintomo di pattern di progettazione che utilizzano l'annidamento di elementi non necessari.

Questo insight considera l'intero DOM, comprese le radici shadow. Ignora i nodi DOM che non sono anche elementi. Inoltre, ignora i contenuti di <iframe>.

Cosa cercare:

  • Elementi totali: il numero complessivo di elementi nel DOM della pagina.
  • Profondità DOM: la profondità massima dell'albero DOM.
  • Più elementi secondari: l'elemento con il maggior numero di elementi secondari.

Come superare questo insight

Questo insight non va a buon fine solo se viene eseguito un ricalcolo di layout o stile di grandi dimensioni che supera una durata di 40 ms.

  • Un aggiornamento del layout di grandi dimensioni coinvolge oltre 100 oggetti di layout (che sono approssimativamente elementi).
  • Un ricalcolo dello stile di grandi dimensioni interessa più di 300 elementi.

In caso di errore, nel riquadro Prestazioni, questo insight evidenzia questi eventi nel flame chart.

Per ridurre il costo di questi eventi:

Indicazioni specifiche per lo stack

Questo insight offre anche indicazioni specifiche per gli stack per le pagine che utilizzano le seguenti tecnologie:

Angular

Se esegui il rendering di elenchi di grandi dimensioni, utilizza lo scorrimento virtuale con Component Dev Kit (CDK).

React

  • Utilizza una libreria di "windowing" come react-window per ridurre al minimo il numero di nodi DOM creati se esegui il rendering di tanti elementi ripetuti nella pagina.
  • Riduci al minimo i re-rendering superflui utilizzando shouldComponentUpdate, PureComponent o React.memo.
  • Salta gli effetti soltanto fino alla modifica di determinate dipendenze se usi l'hook Effect per migliorare le prestazioni di runtime.

Riferimenti aggiuntivi