Paint Holding: riduce la luminosità del bianco nelle navigazioni con la stessa origine

Da un po' di tempo, Chrome cancella lo schermo durante la transizione a una nuova pagina per rassicurare gli utenti che la pagina è in fase di caricamento. Questo "lampo di bianco" è questo breve momento in cui il browser mostra una vernice bianca caricamento di una pagina. Questo può distrarre tra una navigazione e l'altra, soprattutto la pagina è ragionevolmente veloce nel raggiungere uno stato più interessante.

Ma per le pagine che si caricano molto rapidamente, questo approccio è in realtà all'esperienza utente. Nell'animazione seguente è riportato un esempio di come funziona oggi.

Siamo grandi fan di questo sito web e ci dispiace che la sua esperienza di qualità sia rovinata da un lampo di bianco. Vogliamo risolvere il problema. Per farlo, abbiamo adottato un nuovo comportamento che chiamiamo Paint Holding, in cui il browser attende brevemente prima iniziare a dipingere, soprattutto se la pagina è abbastanza veloce. Ciò garantisce che il rendering complessivo di questa pagina, offrendo un'esperienza davvero istantanea.

Funziona così che rinviamo i commit del compositore fino al caricamento di una pagina specifica. (ad es. First Contentful Paint / Timeout fisso). Distinguiamo il lavoro di rendering del thread principale dall'impegno nel thread impl (solo quest'ultimo viene differito). L'attesa dell'evento PLS riduce la probabilità di abbagliamenti di bianco/colore a tinta unita.

Il nostro obiettivo con questo lavoro era che le navigazioni in Chrome tra due pagine della stessa origine fossero agevoli e quindi offrissero un'esperienza di navigazione predefinita rapida senza lampi di sfondo bianco/a tinta unita tra i contenuti vecchi e nuovi.

Prova la funzionalità Blocca pittura in Chrome Canary (Chrome 76) e facci sapere cosa ne pensi. Gli sviluppatori non dovrebbero preoccuparsi di apportare modifiche al pagine web per trarne vantaggio.