Blocco in modalità Risparmio energetico

François Doray
François Doray

Pubblicata il 20 gennaio 2025

A partire da Chrome 133 (febbraio 2025), le schede in background idonee che richiedono un'elevata intensità di risorse della CPU verranno bloccate quando è attiva la modalità Risparmio energetico. L'obiettivo è ridurre il consumo della batteria per gli utenti che si affidano al risparmio energetico e per i quali ogni punto percentuale di durata della batteria è importante. Per ridurre al minimo le interruzioni, verranno bloccate solo le schede in background che soddisfano criteri specifici e presentano un elevato utilizzo della CPU.

Che cos'è il blocco?

Il blocco sospende l'esecuzione delle attività in una pagina web. È incluso quanto segue:

  • Gestori di eventi (ad esempio input, rete e sensore)
  • Timer
  • Risolutori di promesse

Il blocco è diverso dall'eliminazione, in cui una scheda viene scaricata dalla memoria. Quando una scheda bloccata viene nuovamente attivata, viene sbloccata automaticamente e le attività in coda vengono eseguite senza perdita di stato.

Gli eventi di blocco e ripresa vengono inviati quando una pagina viene bloccata o ripresa (consulta la documentazione dell'API Page Lifecycle). Questi eventi consentono alla pagina di rilasciare risorse inutilizzate, di notificare a un server che la pagina è in pausa o di registrare le metriche.

Quali pagine possono essere bloccate?

Il blocco verrà applicato ai gruppi di contesto di navigazione. In genere, un gruppo di contesti di navigazione è costituito da una singola scheda. Tuttavia, più schede possono appartenere allo stesso gruppo quando si utilizzano API come window.open().

Con il Risparmio energetico attivato, un gruppo di contesti di navigazione viene bloccato se soddisfa le seguenti condizioni:

  • Tutte le pagine del gruppo sono state nascoste e non sono state visualizzate notifiche per più di cinque minuti.
  • Qualsiasi sottogruppo di frame dello stesso dominio all'interno del gruppo è "intensivo per la CPU".
  • Il gruppo non:
    • Fornire funzionalità di videoconferenza audio o video (rilevate utilizzando il microfono, la fotocamera, l'acquisizione di schermo/finestra/scheda o un RTCPeerConnection con un canale RTCData "aperto" o un MediaStreamTrack "live").
    • Controllare un dispositivo esterno (rilevato utilizzando Web USB, Web Bluetooth, Web HID o Web Serial).
    • Mantieni un blocco web o una connessione IndexedDB che blocchi le operazioni al di fuori del gruppo.

La definizione di "utilizzo intensivo della CPU" potrebbe evolversi, ma l'intenzione è escludere i client di posta elettronica o di chat implementati in modo efficiente o le applicazioni di calendario che generano notifiche.

Il blocco simultaneo di tutte le schede all'interno dello stesso gruppo di contesto di navigazione riduce al minimo le interruzioni per le app che utilizzano popup, ad esempio quelle per la composizione di messaggi o l'inserimento di credenziali.

Come posso preparare il mio sito?

Se il tuo sito non ha funzionalità in background (ad esempio notifiche, caricamenti di file o aggiornamento dei contenuti), probabilmente non sarà interessato dal blocco.

Se il tuo sito ha funzionalità in background, riduci al minimo l'utilizzo della CPU in background per evitare di essere considerato ad alta intensità di risorse della CPU e quindi di essere bloccato. Ecco alcuni suggerimenti:

Ti consigliamo inoltre di eseguire la migrazione della funzionalità in background a un servizio worker in modo che non sia interessata dal blocco. Oltre a non essere interessato dal blocco, un worker di servizio richiede meno risorse del browser. Valuta la possibilità di utilizzare:

I siti possono disattivare il blocco partecipando alla prova dell'origine BackgroundPageFreezeOptOut. Questa prova verrà interrotta una volta rilasciate nuove API per dichiarare il lavoro in background importante (ad esempio l'API Notifica di avanzamento).

Puoi verificare l'idoneità di una scheda al blocco all'indirizzo chrome://discards. Tieni presente che anche se una scheda è idonea per il blocco, Chrome 133 la bloccherà solo se richiede un utilizzo intensivo della CPU e la funzionalità Risparmio energetico è attiva.

Passaggi successivi

Il blocco delle schede in secondo piano consente di risparmiare energia, aspetto fondamentale per gli utenti che hanno attivato il Risparmio energetico.

Migliora inoltre le prestazioni delle schede in primo piano e aiuta a evitare la chiusura delle schede in background, in particolare sui dispositivi con risorse limitate, riducendo l'utilizzo della CPU e l'accesso alla memoria. Pertanto, Chrome estenderà il blocco delle schede ad altre situazioni (le modifiche verranno annunciate su blink-dev@chromium.org). Per farlo con un'interruzione minima dei casi d'uso in background, nuove API come l'API ProgressNotification consentiranno alle pagine di dichiarare attività in background importanti e di evitare il blocco.