API-интерфейсы для измерения производительности веб-приложений быстро получили статус Recommendation консорциума W3C

Рабочая группа по стандарту Web Performance консорциума W3C недавно опубликовала три спецификации в качестве рекомендаций (Recommendation) консорциума W3C. Эти спецификации полностью реализованы всеми основными поставщиками браузеров. Благодаря этому разработчики смогут более точно измерять производительность веб-приложений и повысить скорость работы в Интернете. В течение последних трех лет компании, в том числе Майкрософт, Google, Mozilla, Intel, Facebook и другие, занимались в этой рабочей группе стандартизацией интерфейсов Navigation Timing, High Resolution Time и Page Visibility. Быстрое внедрение этих рекомендаций демонстрирует, чего можно достичь благодаря объединению усилий отрасли и сообщества на основе сотрудничества с консорциумом W3C.

Чтобы повысить скорость работы в Интернете, разработчикам необходимо точно измерять характеристики производительности веб-приложений и эффективно использовать имеющееся оборудование для улучшения производительности своих приложений. Для решения этих задач рабочая группа по стандарту Web Performance работала над созданием 15 различных спецификаций. В следующей таблице представлен уровень зрелости всех спецификаций, редактируемых рабочей группой.

Спецификация Editor’s Draft First Public Working Draft Last Call Candidate Rec Proposed Rec Rec
Navigation Timing Сентябрь 2010 Октябрь 2010 Январь 2011 Март 2011 Июль 2012 Декабрь 2012
Resource Timing Сентябрь 2010 Май 2011 Август 2011 Май 2012
User Timing Октябрь 2010 Август 2011 Сентябрь 2011 Июль 2012
Performance Timeline Июль 2011 Август 2011 Сентябрь 2011 Июль 2012
High Resolution Time Февраль 2012 Март 2012 Март 2012 Май 2012 Октябрь 2012 Декабрь 2012
Page Visibility Апрель 2011 Июнь 2011 Июль 2011 Июль 2012 Февраль 2013 Май 2013
Display Paint Notifications Май 2011 Июнь 2011 Февраль 2012
Navigation Timing L2 (НОВАЯ) Январь 2013 Январь 2013
Efficient Script Yielding Июнь 2011
High Resolution Time L2 (НОВАЯ) Апрель 2013
Beacon (НОВАЯ) Март 2013
Resource Priorities (НОВАЯ) Апрель 2013
Navigation Error Logging (НОВАЯ) Апрель 2013
Resource Error Logging (НОВАЯ) Апрель 2013
Prerender (НОВАЯ)

Спецификации Navigation Timing, Resource Timing, User Timing и Performance Timeline помогают разработчикам точно измерять время навигации по документу, загрузки ресурсов на странице и выполнения скриптов разработчика. До появления этих API получить такие данные было непросто. Спецификация Navigation Timing была опубликована как рекомендация консорциума W3C, и все основные поставщики браузеров поддерживают ее. Остальные три интерфейса в настоящее время находятся на этапе кандидата к рекомендации (Candidate Recommendation) и ожидают появления двух полных реализаций от поставщиков браузеров. Internet Explorer 10 является сейчас единственным браузером, в котором реализованы все эти интерфейсы. Однако все остальные поставщики браузеров работают над созданием таких реализаций.

Чтобы максимально точно измерять эти показатели производительности, спецификация High Resolution Time позволяет разработчикам измерять параметры операций с точностью до долей миллисекунды. Этот интерфейс помогает не только точно измерять показатели производительности, но и лучше вычислять частоту кадров и синхронизировать анимацию или аудиоподсказки. Он опубликован как рекомендация консорциума W3C, и все основные поставщики браузеров реализовали метод performance.now(), определенный в этой спецификации.

API-интерфейс Page Visibility позволяет программным образом определять текущее состояние отображения страницы. Разработчики могут использовать эти данные для принятия взвешенных решений, связанных с энергоэффективностью и использованием ресурсов центрального процессора, например уменьшать активность, когда страница находится на фоновой вкладке. Эта спецификация также была опубликована как рекомендация консорциума W3C, и все основные поставщики браузеров занимаются ее реализацией.

Спецификации Timing Control for Script-Based Animations и Efficient Script Yielding помогают разработчикам создавать веб-приложения, более эффективно использующие ресурсы центрального процессора и электропитания. API-интерфейс requestAnimationFrame из спецификации Timing Control for Script-Based Animations позволяет создавать более эффективные анимации JavaScript. Все поставщики браузеров полностью поддерживают этот интерфейс, а рабочая группа активно работает над публикацией этой спецификации как кандидата к рекомендации. API-интерфейс setImmediate из спецификации Efficient Script Yielding позволяет разработчикам эффективно передавать поток управления агенту пользователя и получать мгновенный обратный вызов, эффективно используя центральный процессор. Internet Explorer 10 является первым браузером, в котором реализован этот интерфейс.

В этом году рабочая группа начала также рассматривать новые идеи. Редакторские версии черновиков этих идей в настоящее время обсуждаются участниками рабочей группы. API-интерфейс Beacon предназначен для того, чтобы помогать скриптам асинхронно передавать данные на веб-сервер без блокирования события unload, что может отрицательно повлиять на воспринимаемую производительность следующей операции навигации. API-интерфейс Resource Priorities определяет средства, позволяющие веб-разработчикам предоставлять браузеру подсказки о приоритете загрузки ресурсов, чтобы ускорить загрузку страниц. Спецификации Navigation Error Logging и Resource Error Logging, дополняющие спецификации Timing, помогают разработчикам понимать возникающие ошибки и анализировать доступность своих приложений. Спецификация Navigation Timing Level L2 добавляет поддержку High Resolution Time и Performance Timeline к спецификации Navigation Timing, а спецификация High Resolution Time L2 добавляет поддержку рабочих веб-процессов. И это только несколько из черновиков спецификаций, над которыми работает группа в настоящее время. Новые черновики спецификаций для Prerender и других областей диагностики ждут своего часа.

Рабочая группа по стандарту Web Performance консорциума W3C демонстрирует прекрасный пример того, насколько быстро новые идеи могут стать совместимыми стандартами, на которые разработчики могут опираться в современных браузерах с поддержкой HTML5. Вместе с ведущими организациями в отрасли и активными участниками сообщества, входящими в состав этой рабочей группы, мы надеемся по-прежнему обеспечивать быстрый прогресс в области совместимых стандартов, что поможет разработчикам сделать Интернет более быстрым.

Спасибо за внимание!
Джатиндер Манн (Jatinder Mann)
Руководитель программы, Internet Explorer