Отдаем страницы быстрее
или как вписаться
в требования Google
Backend meetup / MESTO
Ростов-на-Дону, 2016
Привет, меня зовут Евгений.
И я хочу рассказать
как сделать ваши сайты быстрее.
Откуда все это?
- 15 лет с знакомства Open Source
- примерно столько же сисадмин
- C/C++, PHP, Ruby, Shell
- 8 лет "техдиром" в веб-студии
А еще очень много часов чтения всего, что показалось интересным.
-
ну и спорить с Google вообще без вариантов ;)
-
ваши страницы должны отвечать за 0.2 секунды
-
у вас должен быть HTTPS на сайте
-
проверяйтесь в PageSpeed Insights и исправляйте
-
пользуйтесь "Developer Tools" в Google Chrome
Что от меня хочет Google?
«Don't be evil»
(c) Paul Buchheit, Google
Почему скорость важна?
-
0,5с задержки снижают прибыль на 1,1-1,4% (Bing)
-
0,1с задержки уменьшает выручку на 1% (Amazon)
-
0,5с задержки уменьшают просмотры на 3% (Facebook)
-
2,16с уменьшают количество загрузок на 15,4% (Mozilla)
«Промедление смерти подобно»
(c) Петр Первый
Что с медленными сайтами?
-
как долго вы сами ждете?
-
теряют аудиторию
-
падает конверсия
-
теряют позиции в поисковиках
-
радуют конкурентов
«Если вы видите, что ваш конкурент тонет, возьмите пожарный шланг и засуньте ему в рот»
(c) Рэй Крок
Про "Скорость"
-
загрузка страницы "под капотом"
-
неожиданные причины для тормозов
-
немного магии на стороне сервера
-
тюним код и верстку, кэшируем
-
как быть в особо "тяжелых" случаях
Дальше по тексту ожидается
"капитанство" ¯\_(ツ)_/¯
Про "Скорость" / Загрузка
-
вводится адрес в браузере
-
ищем IP адрес сервера в DNS
-
подключаемся к серверу по TCP
-
HTTPS - валидность и параметры
-
тащим страницу (TTFB) и ресурсы
«Самые лучшие инвестиции — в знания»
(с) Бенджамин Франклин
Про "Скорость" / Где тормоза?
-
открываем Network в DevTools (Chrome)
-
запрашиваем нужную страницу
-
внимательно смотрим на waterfall
-
проверяем вкладки timing
«Очевидное очень часто ускользает от внимания многих людей»
(c) Джеффри Дивер
Про "Скорость" / Неожиданности
- законы физики не обмануть (RTT)
- где датацентр и где аудитория?
- DNS сервера могут лагать или даже "лежать"
- кстати, HTTPS "тормозит" ваш сайт
- лимиты браузеров по коннектам
«Признаваться в незнании — одно из лучших и вернейших доказательств наличия разума»
(c) Мишель де Монтень
Про "Скорость" / Магия в Nginx
-
для начала ставим Nginx
-
добавляем SPDY или HTTP/2 (на будущее)
- OCSP stapling и Sessions в SSL (ssllabs.com)
-
прописываем mime-types в gzip
-
расставляем нужные "expires"
Тут респект Игорю Сысоеву!
Про "Скорость" / Генерация страниц
-
профилируем скрипты и ищем bottleneck's
-
корректируем Cache-Control и Expires
-
кэшируем страницы (файлы/memcached/etc)
-
кэшируем "каркас" и тащим остальное Ajax'ом
«Между успехом и неудачей лежит пропасть, имя которой "у меня нет времени"»
(c) Франклин Филд
Про "Скорость" / Работа с базой
-
смотрим что интересного в slow логах
-
расставляем индексы в базе
-
проверяем explain и оптимизируем запросы
-
проверяем нет ли блокировок в базе
xxx: На моей работе самая страшная фраза это: "ребята, за какую дату у нас есть бэкап базы данных?"
(c) bash.org.ru
Про "Скорость" / Статика и контент
минифицируем js и css, пережимаем картинки
склеиваем и сокращаем количество запросов
тестируем в PageSpeed Insights и исправляем
добавляем ngx_pagespeed, если лениво
подключаем CDN для статики и контента
«Или не берись, или доводи до конца»
(c) Овидий
Про "Скорость" / Тюнинг
-
задаем разумное значение "idle" процессов
-
unix-сокет быстрее и "дешевле" TCP
-
добавляем keepalive для бэкенда
-
думаем про "persistent connections" с базой
-
подбираем keepalive для браузеров
«Non est finis perfectionis»
Про "Скорость" / На вырост
-
добавляем кэширование в Nginx
-
мониторим сервер(а) и метрики софта
-
добавляем бэкенды для генерации страниц
-
реплики базы для "чтения" или кластер
-
SSL-терминация ближе к посетителю
- Nobody is perfect.
- I'm nobody.
Про «типовые ошибки»
- не все "лечится" повышением цифр в конфигах
- не храните миллионы файлов в одной папке
- симулируйте рост данных в 10-20 раз
- self-hosted или внешний мониторинг (NewRelic?)
«Если какая-то неприятность может произойти, она непременно случится»
Закон Мерфи
дальше в "Типовых ошибках веб-разработчиков"
Отдаем страницы быстрее или как вписаться в требования Google
By Evgeniy K.
Отдаем страницы быстрее или как вписаться в требования Google
Как сделать ваши сайты "быстрее".
- 1,207