Зависание в режиме энергосбережения

Франсуа Дорэ
François Doray

Опубликовано: 20 января 2025 г.

Начиная с Chrome 133 (февраль 2025 г.), соответствующие фоновые вкладки, интенсивно использующие ЦП, будут зависать, когда активен режим энергосбережения. Это направлено на снижение расхода заряда батареи для пользователей, которые полагаются на энергосбережение и для которых важен каждый процент времени автономной работы. Чтобы свести к минимуму сбои, будут заморожены только те фоновые вкладки, которые соответствуют определенным критериям и демонстрируют высокую загрузку ЦП.

Что такое заморозка?

Замораживание приостанавливает выполнение задачи на веб-странице. Это включает в себя:

  • Обработчики событий (например, вход, сеть и датчик)
  • Таймеры
  • Резолверы обещаний

Замораживание отличается от удаления, при котором вкладка выгружается из памяти. Когда замороженная вкладка возвращается в фокус, она автоматически размораживается, и все задачи в очереди выполняются без потери состояния.

События замораживания и возобновления отправляются, когда страница замораживается или возобновляется (см. документацию по API жизненного цикла страницы ). Эти события позволяют странице освободить неиспользуемые ресурсы, уведомить сервер о том, что страница приостановлена, или записать показатели.

Какие страницы можно заморозить?

Заморозка будет действовать при просмотре контекстных групп . Обычно группа контекста просмотра состоит из одной вкладки. Однако при использовании таких API, как window.open() к одной группе могут принадлежать несколько вкладок.

При включенной функции энергосбережения группа контекста просмотра будет заморожена, если она соответствует следующим условиям:

  • Все страницы внутри группы были скрыты и молчали более пяти минут.
  • Любая подгруппа кадров одного происхождения внутри группы «нагружает процессор».
  • В группе нет :
    • Обеспечьте функциональность аудио- или видеоконференций (обнаруживается с помощью микрофона, камеры, захвата экрана/окна/вкладки или RTCPeerConnection с «открытым» RTCDataChannel или «живым» MediaStreamTrack).
    • Управляйте внешним устройством (обнаруженным с помощью Web USB, Web Bluetooth, Web HID или Web Serial).
    • Удерживайте веб-блокировку или соединение IndexedDB, которое блокирует операции за пределами группы.

Определение «интенсивное использование процессора» может развиваться, но намерение состоит в том, чтобы исключить эффективно реализованные клиенты электронной почты или чата, а также приложения-календари, генерирующие уведомления.

Одновременное замораживание всех вкладок в одной группе контекстов просмотра сводит к минимуму сбои в работе приложений, использующих всплывающие окна, например для создания сообщений или ввода учетных данных.

Как мне подготовить свой сайт?

Если на вашем сайте нет фоновых функций (например, уведомлений, загрузки файлов или обновления контента), зависание, скорее всего, не повлияет на него.

Если ваш сайт имеет фоновые функции, сведите к минимуму использование ЦП в фоновом режиме, чтобы его не считали ресурсоемким и, следовательно, не заморозили. Вот несколько советов:

Мы также рекомендуем перенести фоновую функциональность в сервис-воркер, чтобы на нее не повлияло зависание. Сервис-воркеру не только не грозит зависание, но и требуется меньше ресурсов браузера. Рассмотрите возможность использования:

Сайты могут отказаться от блокировки, участвуя в пробной версии BackgroundPageFreezeOptOut . Эта пробная версия будет прекращена, как только будут выпущены новые API для объявления важной фоновой работы (например, API уведомления о ходе выполнения ).

Вы можете проверить возможность зависания вкладки на chrome://discards . Обратите внимание: даже если вкладка может быть заморожена, Chrome 133 заморозит ее только в том случае, если она сильно нагружает процессор и включен режим энергосбережения.

Что дальше?

Замораживание вкладок в фоновом режиме позволяет экономить электроэнергию, что крайне важно для пользователей с включенной функцией энергосбережения.

Это также повышает производительность вкладок переднего плана и помогает избежать закрытия фоновых вкладок, особенно на устройствах с ограниченными ресурсами, за счет снижения использования ЦП и доступа к памяти. Поэтому Chrome расширит возможность блокировки вкладок для большего количества ситуаций (об изменениях будет объявлено по адресуblink-dev@chromium.org ). Чтобы сделать это с минимальным нарушением фонового использования, новые API, такие как API уведомления о прогрессе, позволят страницам объявлять важную фоновую работу и предотвращать зависание.