Data publikacji: 20 stycznia 2025 r.
Od wersji 133 Chrome (luty 2025 r.) odpowiednie karty w tle, które intensywnie wykorzystują procesor, będą zamrażane, gdy tryb Oszczędzanie energii będzie aktywny. Ma to na celu zmniejszenie zużycia baterii w przypadku użytkowników, którzy korzystają z trybu oszczędzania energii i dla których każdy procent czasu pracy na baterii ma znaczenie. Aby zminimalizować zakłócenia, zamrażamy tylko karty w tle, które spełniają określone kryteria i wykorzystują dużo procesora.
Co to jest zawieszanie?
Zamrożenie zawiesza wykonywanie zadania na stronie internetowej. Obejmuje to m.in.:
- Obsługa zdarzeń (np. wejścia, sieci i czujników)
- Liczniki czasu
- Rozwiązania obietnic
Zamrożenie różni się od odrzucenia, w którym karta jest usuwana z pamięci. Gdy zamrożona karta zostanie ponownie wybrana, zostanie automatycznie odmrożona, a wszystkie zadania w kole zostaną wykonane bez utraty stanu.
Zdarzenia freeze i resume są wysyłane, gdy strona jest zamrożona lub wznowiona (patrz dokumentacja interfejsu Page Lifecycle API). Te zdarzenia umożliwiają stronie zwalnianie nieużywanych zasobów, informowanie serwera o wstrzymaniu działania strony lub rejestrowanie danych.
Jakie strony można zamrozić?
Zamrożenie będzie działać na grupach kontekstu przeglądania.
Zazwyczaj grupa kontekstu przeglądania składa się z jednej karty. Jednak przy użyciu interfejsów API, takich jak window.open()
, wiele kart może należeć do tej samej grupy.
Gdy Oszczędzanie energii jest włączone, grupa kontekstu przeglądania zostanie zamrożona, jeśli spełnia te warunki:
- Wszystkie strony w grupie są ukryte i wyciszone od ponad 5 minut.
- Każda podgrupa ramek tego samego pochodzenia w grupie jest „wymagająca procesora”.
- Grupa nie:
- Umożliwiać prowadzenie konferencji audio lub wideo (wykrywane za pomocą mikrofonu, kamery, przechwytywania ekranu, okna lub karty albo RTCPeerConnection z „otwartą” usługą RTCDataChannel lub „na żywo” MediaStreamTrack).
- sterować urządzeniem zewnętrznym (wykrywanym za pomocą interfejsu Web USB, Web Bluetooth, Web HID lub Web Serial);
- Utrzymywanie blokady sieci Web lub połączenia IndexedDB, które blokuje operacje poza grupą.
Definicja „wymagających dużej mocy obliczeniowej” może się zmieniać, ale naszym celem jest wykluczenie z tej kategorii skutecznie zaimplementowanych klientów poczty e-mail lub czatu oraz aplikacji kalendarza, które generują powiadomienia.
Zamrożenie wszystkich kart w ramach tej samej grupy kontekstu przeglądania minimalizuje zakłócenia w przypadku aplikacji, które korzystają z wyskakujących okienek, np. do tworzenia wiadomości lub wprowadzania danych logowania.
Jak mogę przygotować swoją witrynę?
Jeśli Twoja witryna nie ma funkcji działających w tle (np. powiadomień, przesyłania plików czy odświeżania treści), prawdopodobnie nie będzie zamrażana.
Jeśli Twoja witryna ma funkcje działające w tle, zminimalizuj wykorzystanie procesora w tle, aby uniknąć uznania jej za obciążającą procesor i tym samym zamrożoną. Oto kilka wskazówek:
- Unikaj korzystania z minutników do okresowych sprawdzania zmian stanu.
- Użyj interfejsu IntersectionObserver, aby wykryć, kiedy element wchodzi do widoku.
- Użyj ResizeObserver, aby wykrywać zmiany rozmiaru elementu.
- Do zmian w DOM użyj MutationObserver lub niestandardowych wywołań zwrotnych cyklu życia elementu.
- Zamiast serwera pollingowego użyj gniazd internetowych, wydawanych przez serwer zdarzeniach, wiadomościach push lub strumieniach pobierania.
- Używaj zdarzeń takich jak timeupdate i ended do wprowadzania zmian w dźwięku lub obrazie.
Zalecamy też przeniesienie funkcji działających w tle do service workera, aby nie były one blokowane. Oprócz tego, że nie jest podatny na zamarzanie, proces usługi wymaga mniej zasobów przeglądarki. Możesz użyć:
- Push API do wysyłania powiadomień
- Synchronizacja w tle API lub synchronizacja w tle API do pobierania aktualizacji.
Witryny mogą zrezygnować z zawieszania się, biorąc udział w testowaniu origin Rezygnacja z zawieszania się strony w tle. Ta wersja próbna zostanie wycofana, gdy udostępnimy nowe interfejsy API do deklarowania ważnych procesów w tle (np. interfejs API Powiadomienia o postępach).
.Na stronie chrome://discards
możesz sprawdzić, czy możesz zamrozić kartę. Pamiętaj, że nawet jeśli karta kwalifikuje się do zamrożenia, Chrome 133 zamrozi ją tylko wtedy, gdy jest ona obciążająca procesor i tryb oszczędzania energii jest aktywny.
Co dalej?
Blokowanie kart w tle pozwala oszczędzać energię, co jest szczególnie ważne dla użytkowników z włączoną funkcją Oszczędzanie energii.
Zwiększa też wydajność karty na pierwszym planie i pomaga uniknąć zamykania kart w tle, zwłaszcza na urządzeniach o ograniczonych zasobach, poprzez zmniejszenie wykorzystania procesora i dostępu do pamięci. W związku z tym Chrome będzie blokować karty w większej liczbie sytuacji (zmiany zostaną ogłoszone na stronie blink-dev@chromium.org). Aby zapewnić minimalne zakłócenia w przypadku korzystania z tego interfejsu w tle, nowe interfejsy API, takie jak interfejs API powiadomień o postępach, pozwolą stronom deklarować ważne zadania wykonywane w tle i zapobiegną ich zamrażaniu.