Zatrzymanie w trybie oszczędzania energii

François Doray
François Doray

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:

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ć:

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.