Un browser come Chrome invia costantemente a Google dati di telemetria che permettono di sondare costantemente la qualità dell’esperienza utente durante la visita di qualunque pagina Web. Queste informazioni sono utilizzate in ottica Core Web Vitals, per capire quali pagine offrono l’esperienza di navigazione migliore e quali, invece, la rendono più complessa. Il giudizio è composto aggregando i dati provenienti dall’intera base di utenti. Il team di Google spiega che queste informazioni sono tuttavia utilizzate per migliorare le performance di Chrome stesso. La gestione dei cookie è ad esempio un aspetto cruciale, che in alcuni casi – specie nel caso di pagine Web mal sviluppate – può letteralmente affossare le prestazioni.
Perché una gestione dei cookie non ottimale impatta negativamente sulle prestazioni del browser
I cookie sono piccoli file di testo divenuti parte integrante di tante pagine Web da tempo ormai immemore. Sono utilizzati per memorizzare informazioni come preferenze dell’utente e stato delle sessioni. Sono comunemente creati e gestiti utilizzando codice JavaScript.
I browser Web di un tempo, che basavano il loro funzionamento sull’utilizzo di un singolo processo, mantenevano in memoria una singola raccolta dei cookie chiamata cookie jar. Con l’avvento dei browser multi-processo, il cookie jar è diventato responsabile della gestione di un numero sempre maggiore di richieste.
Le specifiche Web richiedono che JavaScript recuperi i cookie in modo sincrono. Rispondere correttamente a singola ogni richiesta document.cookie
, è diventata un’operazione bloccante.
I tecnici di Google spiegano che l’87% degli accessi ai cookie eseguiti oggi dalle pagine Web è assolutamente ridondante, non necessario e riduce le prestazioni. Tantissimi siti Web, infatti, dispongono accessi multipli al contenuto dei cookie, in rapida successione, contribuendo alla creazione di code di richieste e rallentamenti.
Cos’è e come funziona la nuova soluzione Shared Memory Versioning
Gli sviluppatori Google che si sono accorti della problematica nella gestione dei cookie, hanno messo a punto il nuovo sistema Shared Memory Versioning. Ogni valore restituito a valle di una chiamata document.cookie
, è abbinato a una “versione” che aumenta in modo monotono. Di fatto il numero di versione cresce via via di un’unità, senza mai tornare indietro.
Ogni processo di rendering (renderer) memorizza nella cache l’ultimo valore letto da document.cookie
insieme alla sua versione corrispondente. Il servizio di rete (network service) ospita nella memoria condivisa la versione aggiornata di ogni richiesta document.cookie
.
In questo modo, quando un renderer avanza deve recuperare il valore di un cookie, può prima controllare se la versione in cache corrisponde a quella ospitata nella memoria condivisa dal network service. Se le versioni corrispondono, il renderer può utilizzare il valore memorizzato nella cache, evitando così di inviare una query inter-processo al network service per ottenere il contenuto dei vari cookie. Se invece le versioni non corrispondono, significa che il valore di document.cookie
è stato modificato, quindi il renderer dovrà effettuare una richiesta al network service per ottenere l’ultimo valore aggiornato.
Google spiega che questo approccio aumenta significativamente le prestazioni del browser e migliora il comportamento delle pagine Web.
Una modifica che è già disponibile per tutti gli utenti di Chrome
L’azienda di Mountain View dettaglia adesso il funzionamento dello schema Shared Memory Versioning ma chiarisce anche che il nuovo paradigma è in essere in Chrome già da dicembre 2023. A febbraio 2024 si è conclusa la distribuzione della stessa nuova funzionalità all’intera base di utenti. Il grafico delle prestazioni pubblicato nella parte finale della nota diramata da Google, mette in evidenza il miglioramento prestazionale, misurato sui tempi di risposta, che l’approccio “inedito” nella gestione dei cookie ha permesso di ottenere.
La pubblicazione del lavoro sul blog di Chromium lascia intendere che, sebbene ciò non sia chiarito e nel testo si faccia sempre riferimento a Chrome, Shared Memory Versioning possa entrare a far parte anche dei browser di terze parti come Edge, Opera, Vivaldi e via dicendo.