LINUX.ORG.RU

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

 ,


2

4

Разработчики браузера 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, вместо привязки к активации по таймеру. Подобный подход позволит существенно снизить энергопотребление, что положительно скажется на времени работы портативных устройств в автономном режиме, сохранив при этом возможность выполнения фоновых обработчиков. Кроме того, при полной остановке вкладок становится возможным реализация дополнительных техник оптимизации, например, можно высвобождать занятую неактивными вкладками память.

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

  • Во втором квартале 2017 года планируется реализовать серию опций, предоставляющих разработчикам web-приложений средства для отключения агрессивного урезания активности фоновых вкладок, на время пока не будет завершена работа над API для обеспечения фоновых работ.
  • Во втором квартале 2017 года планируется по умолчанию останавливать все фоновые задачи на мобильных устройствах. В настоящее время генерация событий таймера прекращается, если задача находятся в фоне более 5 минут. Для продления автономной работы и блокирования лишнего трафика планируется блокировать все фоновые задачи.
  • Во втором квартале 2017 года планируется ввести ограничения для фоновых задач, активируемых не по таймеру. В настоящее время ограничения действуют только на задачи, вызываемые через таймер и не распространяются на задачи, манипулирующие загрузкой данных. Планируется разработать методы блокировки и для задач, выполняющих загрузку данных, при этом предоставив средства для корректной начальной загрузки страниц в фоновых вкладках.
  • В третьем квартале 2017 года вышеописанная система на основе расходования лимитированного бюджета будет распространена на компоненты, связанные с частями страницы, не попадающими в видимую область экрана.
  • В 2018 году планируется разработать и внедрить ограничения для Web Workers, предварительно изучив их влияние на потребление энергии.
  • На 2018 год намечен переход к полной остановке всех фоновых вкладок после N минут нахождения в фоне. Разработчикам web-приложений будет предоставлен обходной путь для выборочного отключения ограничения.
  • В 2020 году или позднее разработчики Chrome намерены убрать опцию для продолжения работы в фоне в обход ограничений. Все фоновые страницы будут останавливаться без обходных вариантов. Данная стадия будет воплощена в жизнь только после создания API, учитывающего все потребности в выполнении фоновых работ, а также после предоставления значительного времени на внедрение данного API.

Перевод взят с opennet.ru.

>>> Источник (блог Google)



Проверено: Aceler ()

то есть, рекламу и таймеры ты смотреть теперь обязан?

kott ★★★★★ ()

Есть аддон для ФФ, который такое делает. Как-то его тыкал. Да, с «заморозкой» вкладок работает чуть-чуть шустрее, но постоянное обновление страниц при возвращении к ним дико напрягает. Может они, конечно, как-то сделают такое поведение «бесшовным» и незаметным для пользователя. Посмотрим.

petrosyan ★★★★★ ()

И как теперь пользоваться всякими веб-версиями мессенджеров?

te111011010 ()
Ответ на: комментарий от te111011010

что мешает держать их в отдельном окне? Это же уже приложение, а не веб-страничка.

anonymoos ★★★★ ()

Просто теперь каждый сайт будет включать или звук или web workers или другую хипстерскую хренотень просто чтобы его вкладку не засуспендили. ничего нового.

prizident ★★★★★ ()

У меня в FF был такой баг, а теперь оказывается это фича.

ptah_alexs ★★★★★ ()
Ответ на: комментарий от prizident

Web workers и звук никак не мешают суспендить страницу.

Aceler ★★★★★ ()

сначала наделаем какашек, запихнём это всё в какашкабраузер а потом будем героически всё это разгребать

anonymous ()
Ответ на: комментарий от anonymous

Либо начать ломать пальцы тем, кто так и не научился делать сайты правильно.

as_lan ()

Сначала сломали мне веб, теперь чинят, методом доламывания. Молодцы в гугле.

Для большего снижения нагрузки web-разработчикам рекомендуется использовать Page visibility API для отключения лишних работ, таких как перерисовка содержимого, в то время, когда страница находится в фоне.

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

legolegs ★★★★★ ()
Последнее исправление: legolegs (всего исправлений: 1)
Ответ на: комментарий от petrosyan

но постоянное обновление страниц при возвращении к ним дико напрягает

2 чая. Зашел в тред чтобы это написать. Бесит! Очень бесит!

null123 ★★ ()
Ответ на: комментарий от legolegs

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

А как ты себе это представляешь в контексте веба? Хоть немного подумай, прежде чем писать.

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

В контексте веба это вычислялось бы через тюринг-НЕполные html и css. Но веб-макакам жизнь не мила без императивной каши на javascript.

legolegs ★★★★★ ()
Ответ на: комментарий от anonymoos

Почему за меня кто-то должен решать, как мне удобно? А ещё можно музыку слушать в фоновой вкладке.

te111011010 ()

В этой новости нужно больше ката

MrClon ★★★★★ ()
Ответ на: комментарий от anonymous

сначала наделаем какашек, запихнём это всё в какашкабраузер а потом будем героически всё это разгребать

Точно, достали эти какашкобраузеры. Дайте ссылку на ваш браузер, буду пользоваться им.

andreyu ★★★★★ ()
Ответ на: комментарий от legolegs

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

Все gui-тулкиты рефрешат все виджеты с использованием clamp/scissor, которые инвалидированы. Даже если виден один пиксель виджета, то операция по перерисовке будет применена ко всему виджету (к примеру отрисуется вся кнопка и весь текст на ней), после чего будет применен clamp/scissor и блитнется уже только видимая часть фреймбуфера виджета.

andreyu ★★★★★ ()

Поставил в фокс аддон OneTab, закрыл для себя проблему фоновых вкладок. Очень доволен. Ещё-бы он он умел отдельные вкладки скукоживать и позволял вручную сортировать скукоженные вкладки…

MrClon ★★★★★ ()
Ответ на: комментарий от legolegs

Ты блин разберись сначала о чем написано, а потом вставляй свои 5 копеек. Конечно фоновые вкладки не рисуют в фоне, в оригинале написано «visual updates» а не перерисовка. Например если на сайте есть джаваскрипт который двигает снежинки по странице на новый год, то он может не делать этого когда страница в фоне.

pftBest ★★★ ()
Ответ на: комментарий от andreyu

операция по перерисовке будет применена ко всему виджету (к примеру отрисуется вся кнопка и весь текст на ней)

Нет. Ну, можно и так, особенно если программист особо ленив, но вообще-то это не обязательно.

legolegs ★★★★★ ()

общая нагрузка на CPU от фоновой вкладки не превышала 1%
внедрённый метод на 25% снижает нагрузку от фоновых вкладок

У меня вот тоже открыто 25 вкладок и ничего не тормозит, ЧЯДНТ?

anonymous ()
Ответ на: комментарий от pftBest

Например если на сайте есть джаваскрипт который двигает снежинки

Сталина на вас нет! Снежинки они двигают. Нет никаких причин делать это процедурным языком и огребать соотвествующие процедурные проблемы с производительностью, корректностью и т.д. Даже сейчас есть декларативные средства описания движущихся снежинок, с которыми рендеринг снежинки на любой момент делается за O(1) вне зависимости от того, сколько кадров пропущено из-за скрытия вкладки, SIGSTOP и т.п. Но вчерашние phpшники ниасилили, ни «как », ни «зачем».

legolegs ★★★★★ ()
Ответ на: комментарий от anonymous

Сидишь на ЛОРе. Открой 25 главных страниц страниц больших корпораций.

legolegs ★★★★★ ()
Ответ на: комментарий от legolegs

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

anonymous ()
Ответ на: комментарий от te111011010

А ещё можно музыку слушать в фоновой вкладке.

Такая вкладка уже не считается фоновой

annulen ★★★★★ ()
Ответ на: комментарий от legolegs

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

kalterfive ★★ ()
Ответ на: комментарий от kalterfive

Можно придумать. Но 95% сайтов тормозят даже в хроме из-за решения задач уровня движения снежинок.

legolegs ★★★★★ ()

Замечательно. Надеюсь, это и в Firefox придёт.

O02eg ★★★★★ ()
Ответ на: комментарий от prizident

Просто теперь каждый сайт будет включать или звук или web workers или другую хипстерскую хренотень просто чтобы его вкладку не засуспендили. ничего нового.

Два чаю.

rezedent12 ☆☆☆ ()
Ответ на: комментарий от te111011010

А ещё можно музыку слушать в фоновой вкладке.

А ещё музыку можно слушать в плеере.

O02eg ★★★★★ ()
Ответ на: комментарий от Karrham

Для ознакомительного прослушивания самое то. Если по прямой ссылке доступно, то можно и открыть её плеером, но сайты обычно не дают прямую ссылку.

te111011010 ()

сейчас глушу вкладки атоматом с помощью аддона greatsuspender, рекомендую, также в паре с этим использую onetab

anonymous ()
Ответ на: комментарий от te111011010

Есть же специальные костыли для скармливания ссылок, которых якобы нет плеерам.

Karrham ()

Задержка события от таймера выбирается с расчётом, чтобы общая нагрузка на CPU от фоновой вкладки не превышала 1%.
нагрузка на CPU
1%

Это ещё мощнее чем сравнивать две разных архитектуры по тактовой частоте

upcFrost ★★★★★ ()
Ответ на: комментарий от MrClon

Что ты подразумеваешь под скукоживать? OneTab умеет вбирать отдельные вкладки и перетаскивать их вручную по списку тоже.

ptah_alexs ★★★★★ ()
Ответ на: комментарий от h578b1bde

Не нужно.

Это ты расскажи техподдержке банков, чатам на фрилансерах.ком, и тд итп.

Говнобраузер не нужен.

vblats ()
Ответ на: комментарий от cipher

Два чаю этому. Зачем мне ставить еще какие-то костыли в виде плееров, если нынче браузер открыть практически 99% времени работы за пк и в браузерах это нативно решено?

tentakle ()

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

по теме, норм че, давно пора.

dima1981 ()
Ответ на: комментарий от vblats

Это ты расскажи техподдержке банков, чатам на фрилансерах.ком, и тд итп.
Говнобраузер не нужен.

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

h578b1bde ★☆ ()

Просьба его хромиумом называть, это ведь более правильно, нет? Открытый хромиум они и разрабатывают, оптимизируют, делают лидером по поддержке стандартов и ресурсов он (я не знаю, может у меня ноут особенный) в два раза меньше фурифокса кушает. А chrome это другая иконка и плюс пара мелочей вроде шпионов и ещё не знаю чего, как и яндекс браузер, opera, и ещё сотни стремных поделок. Чего все хром да хром?

Romaboy ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.