Не секрет, что современные браузеры отличаются весьма внушительным аппетитом к оперативной памяти. Даже при работе с одной-двумя вкладками они могут потреблять 500 МБ ОЗУ и больше. А если открыть пару десятков страниц, нагрузка становится еще заметнее. Чтобы снизить расход памяти и уменьшить нагрузку на процессор, разработчики браузеров внедрили функцию заморозки вкладок.
Логика проста: если пользователь не находится на вкладке, ее можно «усыпить». Это сократило потребление ресурсов, но не обошлось и без проблем. При пробуждении страниц с обновляющимся в режиме реального времени контентом наблюдался пик активности, сопровождающийся лагами интерфейса. Страница как-бы «осознавала», что за время ее бездействия много чего произошло и пыталась сделать разом то, что пропустила за время своего сна.
Четыре стадии сна
Неиспользуемые в браузере вкладки засыпают не сразу, а постепенно. Существуют четыре стадии сна и чем он глубже, тем более проблемным будет пробуждении вкладки.
- Первая стадия — замедление внутренних таймеров. Через 10–30 секунд после ухода с вкладки браузер начинает увеличивать интервалы обновления таймеров страницы. Например, если какой-либо скрипт обновляется пять раз в секунду, то после частота его работы может снизиться до одного обновления в секунду или реже.
- Вторая стадия — глубокий троттлинг. Если вкладка не используется более пяти минут, браузер переводит ее на «голодный паек», выделяя ей ресурсы процессора по расписанию и небольшими порциями. Более длительные периоды сна сменяются короткими периодами бодрствования, отведенными на обновление внутренних процессов.
- Третья стадия — заморозка. Страница приостанавливает работу — как игра после нажатия кнопки паузы, но при этом все еще остается в ОЗУ. Примечательно, чем наглее ведет себя страница, чем скорее применит к ней меры браузер. И напротив, если она не проявляет излишней активности, до третьей стадии не доходит.
- Четвертая стадия — выгрузка из памяти. Наступает только тогда, когда браузер обнаруживает реальную нехватку памяти. Он полностью выгружает страницу из ОЗУ, оставляя только ее пустую оболочку.
Что делать с фризами при пробуждении
Оптимизация работы вкладок — сугубо задача разработчиков сайтов, но рядовые пользователи могут кое-что сделать.
Вот несколько лайфхаков.
- Если на сайте есть звук, не отключайте его. Фоновые страницы с воспроизводимым медиа контентом не уходят в сон глубже первой стадии.
- Если вы пользуетесь Chrome, зайдите на страницу chrome://discards, найдите на ней нужную вкладку и отключите для нее опцию Auto Discardable.
Она предотвращает переход в четвертую стадию, чтобы запретить Chrome усыплять сайты вообще, добавьте их URL на странице chrome://settings/performance в «белый» список.
- В том же разделе «Производительность» отключите экономию памяти.
Если у вас Firefox, можете переключить на странице about:config параметр dom.timeout.enable_background_budget_throttling в режим false — неактивные вкладки будут получать столько же процессорного времени для своих внутренних часов, сколько и активные.
Разумеется, если только у вас на ПК имеется достаточно ОЗУ.














Добавить комментарий