Gepubliceerd: 20 januari 2025
Vanaf Chrome 133 (februari 2025) worden in aanmerking komende CPU-intensieve achtergrondtabbladen bevroren wanneer de Energiespaarstand actief is. Dit heeft tot doel het batterijverbruik te verminderen voor gebruikers die afhankelijk zijn van Energy Saver en voor wie elk procentpunt van de levensduur van de batterij telt. Om verstoring tot een minimum te beperken, worden alleen achtergrondtabbladen die aan specifieke criteria voldoen en een hoog CPU-gebruik vertonen, bevroren.
Wat is bevriezen?
Door te bevriezen wordt de uitvoering van taken op een webpagina onderbroken. Dit omvat:
- Gebeurtenishandlers (bijvoorbeeld invoer, netwerk en sensor)
- Timers
- Belofte-oplossers
Bevriezen is iets anders dan weggooien, waarbij een tabblad uit het geheugen wordt verwijderd. Wanneer een bevroren tabblad weer in beeld wordt gebracht, wordt het automatisch gedeblokkeerd en worden alle taken in de wachtrij uitgevoerd zonder statusverlies.
De gebeurtenissen voor bevriezen en hervatten worden verzonden wanneer een pagina wordt bevroren of hervat (zie de documentatie over de Page Lifecycle API ). Met deze gebeurtenissen kan de pagina ongebruikte bronnen vrijgeven, een server laten weten dat de pagina is gepauzeerd of statistieken registreren.
Welke pagina's kunnen worden bevroren?
Het bevriezen werkt bij het bladeren door contextgroepen . Normaal gesproken bestaat een browsercontextgroep uit één tabblad. Bij gebruik van API's zoals window.open()
kunnen echter meerdere tabbladen tot dezelfde groep behoren.
Als Energiebesparing is ingeschakeld, wordt een browsercontextgroep bevroren als deze aan de volgende voorwaarden voldoet:
- Alle pagina's binnen de groep zijn al meer dan vijf minuten verborgen en stil.
- Elke subgroep van frames van dezelfde oorsprong binnen de groep is "CPU-intensief".
- De groep doet niet :
- Zorg voor audio- of videoconferentiefunctionaliteit (gedetecteerd met behulp van microfoon, camera, scherm/venster/tabbladopname of een RTCPeerConnection met een 'open' RTCDataChannel of een 'live' MediaStreamTrack).
- Bedien een extern apparaat (gedetecteerd via Web USB, Web Bluetooth, Web HID of Web Serial).
- Houd een Web Lock of een IndexedDB-verbinding vast die bewerkingen buiten de groep blokkeert.
De definitie van "CPU-intensief" kan evolueren, maar het is de bedoeling om efficiënt geïmplementeerde e-mail- of chatclients, of agendatoepassingen die meldingen genereren, uit te sluiten.
Door alle tabbladen binnen dezelfde browsercontextgroep tegelijkertijd te bevriezen, wordt de verstoring geminimaliseerd voor apps die pop-ups gebruiken, zoals apps voor het opstellen van berichten of het invoeren van inloggegevens.
Hoe kan ik mijn site voorbereiden?
Als uw site geen achtergrondfunctionaliteit heeft (bijvoorbeeld meldingen, bestandsuploads of het vernieuwen van inhoud), heeft deze waarschijnlijk geen last van vastlopen.
Als uw site over achtergrondfunctionaliteit beschikt, minimaliseer dan het CPU-gebruik op de achtergrond om te voorkomen dat deze als CPU-intensief en dus bevroren wordt beschouwd. Hier zijn enkele tips:
- Vermijd timers voor periodieke controles op statuswijzigingen.
- Gebruik IntersectionObserver om te detecteren wanneer een element de viewport binnenkomt.
- Gebruik ResizeObserver om veranderingen in de elementgrootte te detecteren.
- Gebruik MutationObserver of aangepaste callbacks voor de levenscyclus van elementen voor DOM-wijzigingen.
- Denk aan websockets , door de server verzonden gebeurtenissen , pushberichten of ophaalstreams in plaats van een pollingserver.
- Gebruik gebeurtenissen zoals timeupdate en beëindigd voor audio- of videowijzigingen.
We raden u ook aan de achtergrondfunctionaliteit naar een servicemedewerker te migreren, zodat deze niet wordt beïnvloed door bevriezing. Een servicemedewerker heeft niet alleen geen last van bevriezing, maar heeft ook minder browserbronnen nodig. Overweeg het gebruik van:
- Push-API voor meldingen
- Achtergrondsynchronisatie-API of Web Periodieke Achtergrondsynchronisatie-API voor het ophalen van updates.
Sites kunnen zich afmelden voor bevriezing door deel te nemen aan de Origin-proefversie van BackgroundPageFreezeOptOut . Deze proefperiode wordt stopgezet zodra er nieuwe API's voor het declareren van belangrijk achtergrondwerk worden vrijgegeven (bijvoorbeeld de Progress Notification API ).
U kunt controleren of een tabblad in aanmerking komt voor bevriezing op chrome://discards
. Houd er rekening mee dat zelfs als een tabblad in aanmerking komt voor bevriezing, Chrome 133 het alleen bevriest als het CPU-intensief is en Energiebesparing actief is.
Wat is het volgende?
Het bevriezen van tabbladen op de achtergrond bespaart energie, wat cruciaal is voor gebruikers met Energiebesparing ingeschakeld.
Het verbetert ook de prestaties van tabbladen op de voorgrond en helpt het beëindigen van tabbladen op de achtergrond te voorkomen, vooral op apparaten met beperkte bronnen, door het CPU-gebruik en de geheugentoegang te verminderen. Chrome zal daarom het bevriezen van tabbladen uitbreiden naar meer situaties (wijzigingen worden aangekondigd op blink-dev@chromium.org ). Om dit te doen met minimale verstoring van gebruiksscenario's op de achtergrond, zullen nieuwe API's zoals de Progress Notification API pagina's in staat stellen belangrijk achtergrondwerk aan te geven en bevriezing te voorkomen.