Последние несколько лет вопросам производительности веб-страниц уделяется много внимания. Уже давно известно, как можно ускорить загрузку страниц, однако далеко не все разработчики заботятся об этом. При этом сайты с каждым днём становятся все более объёмными и сложными. Существует масса сервисов и утилит, дающих детальную информацию о работе сайта и позволяющих оценить время его загрузки. Но в большинстве случаев эти данные отражают ситуацию на машине разработчика либо соответствуют какому-то условному сценарию: например, можно проводить синтетические тесты с заданной шириной канала и определённым набором браузеров. Узнать реальную картину можно, только получая данные от самих пользователей. Мы поговорим о том, какие возможности существуют для этого, посмотрим на инструменты для сбора такой информации и разберём особенности их работы в разных браузерах.
3. 3
Немного о себе
• В веб-разработке более 6ти лет
• Последние 2 года – главные страницы
Яндекса
• Занимаюсь вопросами производительности
ivan-‐karev@yandex-‐team.ru
@newbfg
4. 4
О чем будем говорить
• Время загрузки страницы
– общие вопросы, немного истории
• Наши эксперименты на главной странице
– успехи, неудачи, сомнения
• К чему мы пришли
5. 5
Почему это важно?
• Нужно быть уверенным, что все хорошо
• Нужно уметь сравнивать с другими сервисами
• Нужно уметь оценивать изменения (изменение платформы, дизайна, …)
10. 10
Задача
• Узнать время начала визуальных изменений
• в разных браузерах
• с разными сетевыми условиями
• с нужной периодичностью
11. 11
Инструмент - Шуттилка
• Время начала/окончания визуальных изменений страницы и ее частей
• Все нужные браузеры
• Гибкая настройка сетевых условий
• Высокая пропускная способность, история запусков
• Горячий/холодный кэш, куки и т.д.
22. 22
Что измерить?
1. Скрипты на странице (end of body – start of head)
+ есть корреляция
– зависят от сетевых условий
– зависят от браузера
– погрешность
33. 33
Что измерить?
1. Скрипты на странице (end of body – start of head)
2. Navigation Timing API
+ есть корреляция
– зависят от сетевых условий
– зависят от браузера
– погрешность
34. 34
Что измерить?
1. Скрипты на странице (end of body – start of head)
2. Navigation Timing API
3. Экспериментальные API
50. 50
Что в итоге
• Есть способ измерять визуальные изменения у пользователей
• Пока без поддержки в Firefox
• Есть погрешность в chrome.loadTimes(), исправим
• Opera?
53. 53
Что в итоге
• Есть способ измерять визуальные изменения у пользователей
• Пока без поддержки в Firefox
• Есть погрешность в chrome.loadTimes(), исправим
• Неправильные данные в Opera, ждем исправлений
54. 54
Что в итоге
• Есть способ измерять визуальные изменения у пользователей
• Пока без поддержки в Firefox
• Есть погрешность в chrome.loadTimes(), исправим
• Неправильные данные в Opera, ждем исправлений
• Мобильные устройства
57. 57
Что в итоге
• Есть способ измерять визуальные изменения у пользователей
• Пока без поддержки в Firefox
• Есть погрешность в chrome.loadTimes(), исправим
• Неправильные данные в Opera, ждем исправлений
• Мобильные устройства
• Отчет о времени загрузки страниц в Метрике