Migliorare la Ricerca Google con i dizionari di compressione

Pubblicata il 14 maggio 2025

Compression Dictionary Transport è un nuovo standard che ci consente di comprimere i contenuti ripetuti nelle richieste ed è stato rilasciato in Chrome 130 alla fine del 2024. La Ricerca Google ha adottato questa nuova tecnologia e ha registrato enormi miglioramenti.

L'opportunità

Le pagine web che visitiamo sono molto duplicate. Molte pagine dello stesso sito web sono costituite da parti molto ampie dello stesso codice, che si tratti di HTML, CSS o JavaScript, con solo i contenuti tra tutto questo codice che cambiano. Sebbene ogni risultato sia una combinazione unica di centinaia di funzionalità che genera contenuti totalmente unici, il codice inviato al browser per produrli presenta ancora molte analogie.

Dal punto di vista visivo, la maggior parte delle pagine dei risultati di ricerca è abbastanza simile, indipendentemente dal termine di ricerca inserito: in alto sono presenti il logo di Google, la barra di ricerca e alcuni controlli. Al centro ci sono alcune schede per il tipo di ricerca, poi un elenco di risultati di ricerca a sinistra intervallati da vari widget per aiutare l'utente e un contesto aggiuntivo a destra con riquadri "Informazioni su":

Una tipica pagina dei risultati della Ricerca Google con la barra di ricerca in alto, i risultati nella colonna principale a sinistra e ulteriori informazioni a destra
Pagina dei risultati della Ricerca Google

Infine, in basso, abbiamo le opzioni di paginazione e il piè di pagina standard. Si tratta solo di ciò che è visivamente disponibile: dietro le quinte c'è molto codice (HTML, CSS e JavaScript) per produrre questa pagina. Gran parte di questo codice viene inserito direttamente nel codice HTML della pagina come ottimizzazione delle prestazioni. Sebbene questo consenta un caricamento più rapido della pagina, comporta il costo di non condividere il codice tra diverse pagine dei risultati, come consentirebbe una risorsa memorizzata nella cache esterna.

Compressione sul web

La compressione è una tecnologia ampiamente utilizzata per il web. La compressione delle risorse con gzip o algoritmi più recenti come Brotli o Zstandard consente di evitare le ripetizioni all'interno di un file con la compressione senza perdita di dati per comprimere tutte le informazioni il più possibile sul server prima dell'invio. Il browser può quindi decomprimere i byte compressi per ripristinare i contenuti originali. Per le immagini, la compressione con perdita offre vantaggi simili rimuovendo byte extra che potrebbero non essere percepiti in modo diverso dagli utenti.

Fino a poco tempo fa, la compressione sul web era limitata alla compressione all'interno delle risorse. Non è stato possibile comprimere le risorse diverse e, di certo, non le pagine diverse. Si tratta di una limitazione riconosciuta da tempo che gli ingegneri web hanno cercato di risolvere.

Accorre in nostro aiuto il trasporto del dizionario di compressione.

Browser Support

  • Chrome: 130.
  • Edge: 130.
  • Firefox: not supported.
  • Safari: not supported.

Source

Il trasporto del dizionario di compressione è un nuovo standard che consente la compressione tra le risorse con l'utilizzo di "dizionari" condivisi che consentono di sostituire serie comuni di byte con riferimenti da quel dizionario condiviso.

Gli algoritmi di compressione moderni come Brotli e Zstandard supportano l'utilizzo di dizionari di termini comuni che consentono una maggiore compressione sostituendo questi termini con un riferimento più piccolo al dizionario. Brotli include anche un dizionario integrato di termini web comuni. Il trasporto del dizionario di compressione si basa su questo approccio fornendo al server e al browser modi per condividere i dizionari personalizzati.

I dizionari personalizzati possono essere una risorsa già utilizzata sul sito. Ad esempio, puoi utilizzare app.v1.js come dizionario durante il download di app.v2.js per scaricare solo la differenza (spesso nota come "compressione delta"). In alternativa, è possibile specificare una risorsa di dizionario separata con un tag <link rel="compression-dictionary"> (o un'intestazione HTTP Link equivalente).

In questo modo, puoi ridurre notevolmente le dimensioni del download delle risorse con molti contenuti o codice condivisi, come le pagine dei risultati di ricerca menzionate in precedenza.

Utilizzo dei dizionari di compressione da parte della Ricerca Google

Il team della Ricerca Google cerca costantemente di migliorare il rendimento della Ricerca. È stata tra le prime ad adottare i dizionari di compressione, poiché ha intuito il potenziale di questa tecnologia.

La Ricerca utilizza la compressione Brotli condivisa per le pagine dei risultati con un file di dizionario separato creato da un campione rappresentativo di risultati di ricerca. Una solida pipeline automatizzata garantisce l'aggiornamento del dizionario, in linea con i contenuti SRP in continua evoluzione che vengono rilasciati più volte al giorno. Puoi utilizzare DevTools per scoprire esattamente come funziona.

Quando un client carica per la prima volta una pagina dei risultati di ricerca, il server fornisce un link al dizionario utilizzando l'intestazione HTTP Link: con un tipo rel=compression-dictionary:

Intestazioni HTTP di risposta in Chrome DevTools con l&#39;intestazione Link rel=compression-dictionary evidenziata
Chrome DevTools mostra l'intestazione Link nella scheda Rete

Se il client supporta la compressione del dizionario Brotli, ma non ha ancora memorizzato nella cache il dizionario condiviso, il browser scarica questo dizionario durante i periodi di inattività. La risposta del dizionario include l'intestazione di risposta Use-As-Dictionary che indica al browser per quali risorse può utilizzare questo dizionario:

Intestazioni HTTP di risposta in Chrome DevTools con l&#39;intestazione Use-As-Dictionary evidenziata
Chrome DevTools mostra l'intestazione Use-As-Dictionary nella scheda Rete

Il dizionario utilizzerà la semantica cache-control standard e sarà disponibile per tutte le risorse corrispondenti alle regole definite in quell'intestazione, in questo esempio le pagine iniziavano con /search.

Per i caricamenti futuri delle pagine dei risultati di ricerca, il browser può comunicare al server di avere un dizionario utilizzando l'intestazione della richiesta HTTP Available-Dictionary. Ricaricando la pagina, viene visualizzato quanto segue:

Intestazioni HTTP di risposta in Chrome DevTools con l&#39;intestazione Dizionario-disponibile evidenziata
Chrome DevTools mostra l'intestazione Available-Dictionary nella scheda Rete

Con la casella di controllo Conserva log attivata e il filtro, possiamo confrontare le due risposte:

Confronto di due download della stessa risorsa: quello in alto è di 107 kB e quello in basso di 60 kB
Scheda Rete di Chrome DevTools

In questo esempio, la prima richiesta è la risposta completa di 107 kB e utilizza la compressione Brotli (br), mentre la seconda richiesta di ricarica è quasi la metà delle dimensioni, pari a 60 kB, e utilizza la compressione Brotli con dizionario (dcb), con un tempo di download più rapido.

In Chrome, puoi visualizzare la pagina chrome://net-internals/#sharedDictionary per visualizzare i dizionari condivisi ed eliminarli se vuoi ripetere questo esempio dall'inizio.

Pagina Dizionario condiviso che mostra un dizionario condiviso
Pagina #sharedDictionary Net-Internals

I risultati

La modifica è stata implementata per gli utenti della Ricerca nella primavera del 2025, inizialmente per gli utenti di Chrome. In questo modo, le dimensioni medie del payload HTML sono state ridotte del 23% per tutti gli utenti di Chrome rispetto alla compressione Brotli standard. Questa media complessiva include sia i risultati non compressi dal dizionario (ad esempio gli utenti che utilizzano per la prima volta il dizionario) sia i risultati di ricerca compressi dal dizionario. Per i risultati compressi con dizionario, i risparmi sono ancora maggiori, come abbiamo visto con il miglioramento di quasi il 50% nell'esempio precedente.

Ciò ha comportato un miglioramento del 1, 7% in termini di Largest Contentful Paint (LCP) in generale e fino al 9% sulle reti con latenza elevata. Potrebbe sembrare poco, ma la Ricerca Google è un sito iperottimizzato, quindi i vantaggi di questa portata sono enormi. Altri siti potrebbero registrare miglioramenti ancora maggiori con questa tecnologia.

Provalo sul tuo sito.

Il trasporto del dizionario di compressione è ora pronto per essere utilizzato in tutti i browser basati su Chromium (Chrome, Edge, Opera e così via). Si tratta di un miglioramento progressivo che verrà ignorato dai browser non supportanti, ma, man mano che un numero maggiore di browser lo supporta, anche questi potranno trarne vantaggio.

Le sfide affrontate da questa tecnologia sono ben lontane dall'essere specifiche per la Ricerca Google. Molti siti possono trarre vantaggio dal trasporto del dizionario di compressione, con un dizionario separato come quello utilizzato dalla Ricerca o utilizzando una risorsa esistente come dizionario (ad esempio la versione precedente di un'app durante l'implementazione di una nuova versione).

Consulta la guida su MDN per ulteriori dettagli sul funzionamento di questa tecnologia e su come implementarla sul tuo sito.

Questa operazione richiede una certa configurazione sul server o nel processo di compilazione per creare risorse compresse basate su dizionario e pubblicarle di conseguenza, ma i risultati possono essere davvero impressionanti in termini di prestazioni.