-> ->

Оптимизация отрисовки контента в Google Chrome, специальный API

Сейчас всё большее количество веб-страниц использует элемент Canvas для отрисовки 2D-контента или модификации DOM-элементов на лету. Подобные страницы используют функции setTimeout или setInterval для получения более частых обратных вызовов, что позволяет периодически отрисовывать контент или использовать DHTML для перемещения элементов на странице. Подобным образом работает и WebGL API, используя для анимации похожую технику.

Но, функциям setTimeout и setInterval неважно какой элемент обрабатывается и какая вкладка используется - фоновая или активная, нагрузка на процессор остаётся высокой независимо от просматриваемой страницы пользователем. Особенно такая проблема может сильно поразить нетбуки, ноутбуки и другие мобильные девайсы, где излишняя и ненужная нагрузка на процессор расходует заряд батареи. Кроме этого, избыточная нагрузка на процессор в фоновой вкладке может ухудшить плавность работы анимации в просматриваемой вкладке.

В Mozilla недавно был представлен эккспериментальный набор API под названием mozRequestAnimationFrame, который имеет некоторые различия в работе по сравнению с setTimeout и setInterval. Браузер возвращает вызов только после того как будет готов к обработке следующего кадра, функции mozRequestAnimationFrame API специфичны и могут получать доступ к браузеру, проверяя вкладку, в которой происходит анимация и при обработке фоновой вкладке просто не отправляет обратный вызов слишком часто.

Экспериментальный webkitRequestAnimationFrame API был добавлен в WebKit и доступен начиная с Google Chrome 10, по сути это такой же mozRequestAnimationFrame, но поддерживает в качестве второго необязательного аргумента элемент, которому следует передать управление анимацией. Подобная практика позволит браузеру избежать ненужной анимации, которая в данный момент может оказаться невидимой для пользователя.

WebGL примеры уже модифицированы для использования requestAnimationFrame вместо setTimeout и setInterval.

В предстоящем релизе Google Chrome 11 планируется сократить потребление процессора даже для страниц, которые используют setTimeout и setInterval. Для фоновых вкладок планируется запустить отдельные таймеры, которые будут исполнять требуемые действия примерно один раз в секунду. Такие изменения уже доступны в каналах Dev и Canary браузера Google Chrome.

На некоторых страницах могут возникнуть проблемы, но разработчики Google Chrome на данный момент считают, что это ничто, по сравнению с проблемой бесполезной нагрузки процессора фоновыми вкладками.

Поставить рейтинг:(Рейтинг: 2.85, оценок: 380)
 
Поделитесь новостью:

New! Полная статистика популярности браузеров по Рунету и миру. Системы сбора статистики LiveInternet, OpenStat, StatCounter в одном месте. Данные по всем популярным браузерам, таким как Google Chrome, Mozilla Firefox, Яндекс.Браузер, Opera, Microsoft Internet Explorer, а также альтернативным браузерам.

Возможно, Вам будут интересны новости:
События в тоже время:

Комментарии

Комментариев пока нет

Чтобы оставить комментарий - зарегистрируйтесь или авторизуйтесь через любимый сервис (ВКонтакте, Одноклассники, Twitter и др.) с помощью OpenID.