Опубликовано: 20 января 2025 г.
Начиная с Chrome 133 (февраль 2025 г.), соответствующие фоновые вкладки, интенсивно использующие ЦП, будут заблокированы, когда активен режим энергосбережения. Это направлено на снижение расхода заряда батареи для пользователей, которые полагаются на энергосбережение и для которых важен каждый процент времени автономной работы. Чтобы свести к минимуму сбои в работе, будут заморожены только те фоновые вкладки, которые соответствуют определенным критериям и демонстрируют высокую загрузку ЦП.
Что такое замораживание?
Замораживание приостанавливает выполнение задачи на веб-странице. Это включает в себя:
- Обработчики событий (например, вход, сеть и датчик)
- Таймеры
- Резолверы обещаний
Замораживание отличается от удаления, при котором вкладка выгружается из памяти. Когда замороженная вкладка возвращается в фокус, она автоматически размораживается, и все задачи в очереди выполняются без потери состояния.
События замораживания и возобновления отправляются, когда страница замораживается или возобновляется (см. документацию по API жизненного цикла страницы ). Эти события позволяют странице освободить неиспользуемые ресурсы, уведомить сервер о том, что страница приостановлена, или записать показатели.
Какие страницы можно заморозить?
Заморозка будет действовать при просмотре контекстных групп . Обычно группа контекста просмотра состоит из одной вкладки. Однако при использовании таких API, как window.open()
, к одной группе могут принадлежать несколько вкладок.
Если включена функция энергосбережения, группа контекста просмотра будет заморожена, если она соответствует следующим условиям:
- Все страницы внутри группы были скрыты и молчали более пяти минут.
- Любая подгруппа кадров одного происхождения внутри группы «нагружает процессор».
- В группе нет :
- Обеспечьте функциональность аудио- или видеоконференций (обнаруживается с помощью микрофона, камеры, захвата экрана/окна/вкладки или RTCPeerConnection с «открытым» RTCDataChannel или «живым» MediaStreamTrack).
- Управляйте внешним устройством (обнаруженным с помощью Web USB, Web Bluetooth, Web HID или Web Serial).
- Удерживайте веб-блокировку или соединение IndexedDB, которое блокирует операции за пределами группы.
Определение «интенсивное использование ЦП» может меняться, но намерение состоит в том, чтобы исключить эффективно реализованные клиенты электронной почты или чата, а также приложения-календари, генерирующие уведомления.
Одновременное замораживание всех вкладок в одной группе контекстов просмотра сводит к минимуму сбои в работе приложений, использующих всплывающие окна, например для создания сообщений или ввода учетных данных.
Как мне подготовить свой сайт?
Если на вашем сайте нет фоновых функций (например, уведомлений, загрузки файлов или обновления контента), зависание, скорее всего, не повлияет на него.
Если ваш сайт имеет фоновые функции, сведите к минимуму использование ЦП в фоновом режиме, чтобы его не считали ресурсоемким и, следовательно, не заморозили. Вот несколько советов:
- Избегайте таймеров для периодических проверок изменения состояния.
- Используйте IntersectionObserver , чтобы определить, когда элемент попадает в область просмотра.
- Используйте ResizeObserver для обнаружения изменений размера элемента.
- Используйте MutationObserver или обратные вызовы жизненного цикла настраиваемых элементов для изменений DOM.
- Рассмотрите возможность использования веб-сокетов , событий, отправляемых сервером , push-сообщений или выборки потоков вместо сервера опроса.
- Используйте такие события, как timeupdate и expired, для изменений аудио или видео.
Мы также рекомендуем перенести фоновые функции в сервис-воркер, чтобы на них не повлияло зависание. Сервис-воркеру не только не грозит зависание, но и требуется меньше ресурсов браузера. Рассмотрите возможность использования:
- Push API для уведомлений
- API фоновой синхронизации или API периодической веб-синхронизации для получения обновлений.
Сайты могут отказаться от блокировки, приняв участие в пробной версии источника BackgroundPageFreezeOptOut . Эта пробная версия будет прекращена, как только будут выпущены новые API для объявления важной фоновой работы (например, API уведомления о ходе выполнения ).
Вы можете проверить возможность зависания вкладки на chrome://discards
. Обратите внимание: даже если вкладка может быть заморожена, Chrome 133 заморозит ее только в том случае, если она сильно нагружает процессор и включен режим энергосбережения.
Что дальше?
Замораживание вкладок в фоновом режиме позволяет экономить электроэнергию, что крайне важно для пользователей с включенной функцией энергосбережения.
Это также повышает производительность вкладок переднего плана и помогает избежать закрытия фоновых вкладок, особенно на устройствах с ограниченными ресурсами, за счет снижения использования ЦП и доступа к памяти. Поэтому Chrome расширит возможность блокировки вкладок для большего количества ситуаций (об изменениях будет объявлено по адресуblink-dev@chromium.org ). Чтобы сделать это с минимальным нарушением фонового использования, новые API, такие как API уведомления о прогрессе, позволят страницам объявлять важную фоновую работу и предотвращать зависание.