5. Вводные данные проекта
● 3 500 000 уникальных пользователей в
месяц
● Примерно 250 000 уникальных
пользователей в день
● От 750 000 хитов в день
● 1 000 000+ страниц
10. С чего начали
● PageSpeed:
o Desktop 70-80
o Mobile 50-60
● На “тестовой” машине
o OnLoad 40+ сек
o DOMContentLoaded 6+ сек
o Первый нормальный render 8+ сек
14. Теория
На что мы можем влиять:
● время ответа сервера (ping)
● время генерации файла
● время передачи файла
● последовательность загрузки файлов
● используемые технологии на клиенте
● количество контента
Critical Render Path
16. Анализ - Что будем наблюдать?
● Браузер:
o DOMContentLoaded
o OnLoad
● request time (access.log)
17. Анализ - Что будем наблюдать?
Правило 6:
Не меряйте средние величины, делите
на группы
18. Анализ - Что будем наблюдать?
Пример:
1 000 000 страниц и 50+ типов страниц:
● Тип А - 50% просмотров
● Тип B - 30% просмотров
● Тип C - 10% просмотров
● …
19. Анализ - Что будем наблюдать?
Правило 7:
Идите от просмотров, а не от
количества
20. Как мерим?
Сначала все руками, чтобы понять причины:
● Консоль разработчика
Потом статистический анализ:
● kibana(elasticsearch) для nginx
● RUM (real user measurement)
21. Что не является поводом к действию?
● Google analitics и Яндекс.метрика не
подошли
● PageSpeed, YSlow
28. JS - Результат
● Browserify лучше
● Максимальный прирост
производительности - если скрипты в
конце body
● Используйте google tag для маркетинга
● DOMContentLoad - responseEnd < 0.7
● Реклама - зло, так как российские
системы себя не оптимизируют
31. CSS
● Убрать не используемые селекторы
● Отказаться от поддержки IE8
● Разделить на файлы по статистике
посещения (страницы A,B,C)
● Уменьшить количество подключаемых
файлов, в том числе изображений
32. CSS - Результат
● Очистка css от неиспользуемых
селекторов дало плохой результат
● Разбить по статистике - уменьшило файл
в 4 раза
● Уменьшения количества изображений
(объединение в спрайты) - хорошо
● Загружать шрифты - плохо
40. Backend - кеширование
● Учитывать время жизни объектов
● Разбивать на максимально
переиспользуемые куски
● Разрабатывайте, чтобы работало без
кеша
● Старайтесь отсрочить момент, когда кеш
41. Backend - Результаты
● Request time уменьшился до 0,6
● С включенным кешем до 0,3
● Кеширование на nginx до 0,05