18
1 Отдаем Отдаем страницы страницы быстрее быстрее или или как как вписаться вписаться в требования требования Google Backend meetup / MESTO Ростов-на-Дону , 2016

Отдаем страницы быстрее или как вписаться в требования Google

  • Upload
    it61

  • View
    131

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Отдаем страницы быстрее или как вписаться в требования Google

1

ОтдаемОтдаем страницыстраницы быстреебыстрееилиили каккак вписатьсявписаться

вв требованиятребования GGooooggllee

Backend meetup / MESTOРостов-на-Дону, 2016

Page 2: Отдаем страницы быстрее или как вписаться в требования Google

2

Привет, меня зовутЕвгений.

И я хочу рассказатькак сделать ваши сайты

быстрее.

Page 3: Отдаем страницы быстрее или как вписаться в требования Google

3

Откуда все это?

15 лет с знакомства Open Sourceпримерно столько же сисадминC/C++, PHP, Ruby, Shell8 лет "техдиром" в веб-студии

А еще очень много часов чтениявсего, что показалось интересным.

Page 4: Отдаем страницы быстрее или как вписаться в требования Google

4

ну и спорить с Google вообще без вариантов ;)ваши страницы должны отвечать за 0.2 секундыу вас должен быть HTTPS на сайтепроверяйтесь в PageSpeed Insights и исправляйтепользуйтесь "Developer Tools" в Google Chrome

Что от меня хочет Google?

«Don't be evil» (c) Paul Buchheit, Google

Page 5: Отдаем страницы быстрее или как вписаться в требования Google

5

Почему скорость важна?

0,5с задержки снижают прибыль на 1,1-1,4% (Bing)0,1с задержки уменьшает выручку на 1% (Amazon)0,5с задержки уменьшают просмотры на 3% (Facebook)2,16с уменьшают количество загрузок на 15,4% (Mozilla)

«Промедление смерти подобно» (c) Петр Первый

Page 6: Отдаем страницы быстрее или как вписаться в требования Google

6

Что с медленными сайтами?

как долго вы сами ждете?теряют аудиториюпадает конверсиятеряют позиции в поисковикахрадуют конкурентов

«Если вы видите, что ваш конкуренттонет, возьмите пожарный шланг изасуньте ему в рот»

(c) Рэй Крок

Page 7: Отдаем страницы быстрее или как вписаться в требования Google

7

Про "Скорость"

загрузка страницы "под капотом"неожиданные причины для тормозовнемного магии на стороне сервератюним код и верстку, кэшируемкак быть в особо "тяжелых" случаях

Дальше по тексту ожидается

"капитанство" ¯\_(ツ)_/¯

Page 8: Отдаем страницы быстрее или как вписаться в требования Google

8

Про "Скорость" / Загрузка

вводится адрес в браузереищем IP адрес сервера в DNSподключаемся к серверу по TCPHTTPS - валидность и параметрытащим страницу (TTFB) и ресурсы

«Самые лучшие инвестиции — в знания» (с) Бенджамин Франклин

Page 9: Отдаем страницы быстрее или как вписаться в требования Google

9

Про "Скорость" / Где тормоза?

открываем Network в DevTools (Chrome)запрашиваем нужную страницувнимательно смотрим на waterfallпроверяем вкладки timing

«Очевидное очень часто ускользаетот внимания многих людей»

(c) Джеффри Дивер

Page 10: Отдаем страницы быстрее или как вписаться в требования Google

10

Про "Скорость" / Неожиданности

законы физики не обмануть (RTT)где датацентр и где аудитория?DNS сервера могут лагать или даже "лежать"кстати, HTTPS "тормозит" ваш сайтлимиты браузеров по коннектам

«Признаваться в незнании — одно излучших и вернейших доказательствналичия разума» (c) Мишель де Монтень

Page 11: Отдаем страницы быстрее или как вписаться в требования Google

11

Про "Скорость" / Магия в Nginx

для начала ставим Nginxдобавляем SPDY или HTTP/2 (на будущее)OCSP stapling и Sessions в SSL ( )прописываем mime-types в gzipрасставляем нужные "expires"

ssllabs.com

Тут респект Игорю Сысоеву!

Page 12: Отдаем страницы быстрее или как вписаться в требования Google

12

Про "Скорость" / Генерация страниц

профилируем скрипты и ищем bottleneck'sкорректируем Cache-Control и Expiresкэшируем страницы (файлы/memcached/etc)кэшируем "каркас" и тащим остальное Ajax'ом

«Между успехом и неудачей лежитпропасть, имя которой "у меня нетвремени"» (c) Франклин Филд

Page 13: Отдаем страницы быстрее или как вписаться в требования Google

13

Про "Скорость" / Работа с базой

смотрим что интересного в slow логахрасставляем индексы в базепроверяем explain и оптимизируем запросыпроверяем нет ли блокировок в базе

xxx: На моей работе самаястрашная фраза это: "ребята, закакую дату у нас есть бэкап базыданных?"

(c) bash.org.ru

Page 14: Отдаем страницы быстрее или как вписаться в требования Google

14

Про "Скорость" / Статика и контент

минифицируем js и css, пережимаем картинкисклеиваем и сокращаем количество запросовтестируем в PageSpeed Insights и исправляемдобавляем , если ленивоподключаем CDN для статики и контента

ngx_pagespeed

«Или не берись, или доводи до конца» (c) Овидий

Page 15: Отдаем страницы быстрее или как вписаться в требования Google

15

Про "Скорость" / Тюнинг

задаем разумное значение "idle" процессовunix-сокет быстрее и "дешевле" TCPдобавляем keepalive для бэкендадумаем про "persistent connections" с базойподбираем keepalive для браузеров

«Non est finis perfectionis»

Page 16: Отдаем страницы быстрее или как вписаться в требования Google

16

Про "Скорость" / На вырост

добавляем кэширование в Nginxмониторим сервер(а) и метрики софтадобавляем бэкенды для генерации страницреплики базы для "чтения" или кластерSSL-терминация ближе к посетителю

- Nobody is perfect.- I'm nobody.

Page 17: Отдаем страницы быстрее или как вписаться в требования Google

17

Про «типовые ошибки»

не все "лечится" повышением цифр в конфигахне храните миллионы файлов в одной папкесимулируйте рост данных в 10-20 разself-hosted или внешний мониторинг (NewRelic?)

«Если какая-то неприятностьможет произойти, онанепременно случится» Закон Мерфи

дальше в "Типовых ошибках веб-разработчиков"