Разработчики Chrome намерены перейти к полной остановке выполнения фоновых вкладок, а также дальнейшие планы Google на Google Chrome

Разработчики браузера Chrome выступили с инициативой по повышению эффективности энергопотребления браузера за счёт подавления активности в фоновых вкладках, не просматриваемых пользователем в текущий момент. В конечном счёте в будущем планируется полностью блокировать активность в фоновых вкладках.

Первым шагом стала реализация в Chrome 57 расширенного механизма приостановки генерации событий таймера для фоновых вкладок. Если ранее генерация событий таймера для активации обработчиков в фоновых вкладках снижалась до одного запуска в секунду, то в Chrome 57 применены новые правила, которые дополнительно приостанавливают таймер, если фоновое web-приложение потребляет достаточно много ресурсов CPU. Задержка события от таймера выбирается с расчётом, чтобы общая нагрузка на CPU от фоновой вкладки не превышала 1%.

В частности, каждой фоновой вкладке теперь выделяется определённый бюджет времени в секундах, который расходуется на запуск таймеров. При каждом запуске таймера из бюджета вычитается процессорное время, потраченное на выполнение обработчика. При этом бюджет также непрерывно пополняется на 0.01 в секунду (значение можно изменить в настройках). Как только бюджет примет отрицательное значение, вызов обработчиков по таймеру прекращается.

Ограничение начитает применяться не сразу, а через 10 секунд после нахождения вкладки в фоне (даётся время на инициализацию вкладок, сразу открываемых в фоне). Ограничение также не распространяется на фоновые вкладки, в которых используется API для воспроизведения звука, WebSockets или WebRTC. Для выполнения таких задач как обработка push-уведомлений и перерисовка заголовка страницы или картинки favicon, предлагается использовать Service Workers. Для пользователя предусмотрена возможность отключения урезания активности фоновых вкладок через запуск браузера с опцией --disable-background-timer-throttling.

Эксперименты показали, что внедрённый метод на 25% снижает нагрузку от фоновых вкладок, интенсивно нагружающих процессор. По мнению разработчиков, данный показатель можно значительно улучшить, так как по предварительной оценке фоновые вкладки потребляют почти треть всех расходуемых браузером ресурсов CPU. Для большего снижения нагрузки web-разработчикам рекомендуется использовать Page visibility API для отключения лишних работ, таких как перерисовка содержимого, в то время, когда страница находится в фоне.

В идеале разработчики намерены в будущем перейти к полной остановке фоновых вкладок с выносом всех фоновых работ на обработчики, использующие API Service Workers, вместо привязки к активации по таймеру. Подобный подход позволит существенно снизить энергопотребление, что положительно скажется на времени работы портативных устройств в автономном режиме, сохранив при этом возможность выполнения фоновых обработчиков. Кроме того, при полной остановке вкладок становится возможным реализация дополнительных техник оптимизации, например, можно высвобождать занятую неактивными вкладками память.

(План дальнейшего развития инициативы)

 chromium, google chrome, internet

©  Linux.org.ru