РИТ++ 2017, HighLoad Junior
Зал Сингапур, 6 июня, 10:00
Тезисы:
http://junior.highload.ru/2017/abstracts/2475.html
Когда проект растёт, возникает множество проблем с масштабируемостью сервиса: БД, сервера приложений, хранилище. Однако, не менее важной становится клиентская часть веб-приложения.
Во-первых, грамотная клиентская оптимизация позволяет повысить скорость работы сервиса для пользователей и, следовательно, увеличить их лояльность, которая конвертируется в деньги.
...
4. Можно сделать лучше
• Правила и методики известны
• Инструменты есть
• Нет политического решения и осведомлённости
4
5. О чём доклад
• Анализ и оптимизация реального сайта по шагам
• Настройки Nginx для статики
• Оптимальный TLS
• Немного о TCP/IP в Linux
• CDN
• Средства тестирования скорости
5
12. Выводы
• Нужно сократить время до start render
• Мобильная версия = desktop
• Сайт не пригоден для мобильного интернета
• Нужно сокращать объём трафика
• Сократить количество блокирующих ресурсов
• Наличие клиентской SPOF (Google Fonts)
12
13. Шаг 1. Смотрим CSS
1. Styles.css (38,9 kb)
2. Fonts.googleapis.com/…. (1,8 kb)
• Минификация есть
• Сжатие Gzip (но gzip -3)
• Кеширование есть (Expires, Cache-control, Last-Modified)
• Часть CSS получаем со стороннего хоста!
• Шрифтовой CSS через Import
• Inline font!
13
14. Шаг 1. CSS оптимизация
• Сжимаем brotli Style.css: 29.7 kb (-24%)
• Выносим fonts.google в HTML из Import
14
21. Шаг 3. Шрифты
• Основные: fonts.googleapis.com, еще и локальные
• Всего: 7 шт., 392 kb
• Грузится отдельный CSS с внешнего хоста (TCP, DNS, TLS
handshake)
• Часть шрифтов из Google Fonts дублировано локальными
• Локальные шрифты в TTF, отдаются без сжатия
21
22. Шаг 3. Шрифты результаты
• Переносим все шрифты на сайт
• Локальный CSS для шрифтов
• Используем только WOFF2
• 392 kb -> 122 kb
22
43. Что можно сделать еще?
• Разобрать JS- и CSS-код по исходникам, разбить по шаблонам
• Вычистить неиспользуемый CSS-код
• Вынести CSS из common.js и убрать весь JS-код вниз
• Провести аудит используемых шрифтов
• Разбить спрайт в PNG, перевести иконки в SVG
• Добиться сокращение трафика для мобильных
• Адаптивные картинки
43