client optimization drupal

32
Клиентская оптимизация Егор Талдыкин Ardas Group Inc.

Upload: yury-glushkov

Post on 16-Jun-2015

259 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Client optimization drupal

Клиентская оптимизация

Егор ТалдыкинArdas Group Inc.

Page 2: Client optimization drupal

Dial-up DSL LAN

~5-6c

Среднее время

загрузки страницы

Page 3: Client optimization drupal

Генерация HTML (~10%)

Загрузка ресурсов/статики(~82%)

Рендеринг (~8%)

Page 4: Client optimization drupal

1. Генерация и доставка HTML2. Ресурсы (js/css/fonts)3. Статический контент (images/js/css)4. Lazyload (images/blocks/etc)

Направления оптимизации

Page 5: Client optimization drupal

1. Генерация и доставка HTML

11

Page 6: Client optimization drupal

Встроенное кэширование ядра и модулей

• Pagecache• Blocks• Views

11

Page 7: Client optimization drupal

Кэширование в коде

• drupal_static• cache_get/cache_set• Кэширование в renderable arrays• Entity cache

11

Page 8: Client optimization drupal

Boost

• Кэш для анонимов• Хранит кэш в файлах• Устанавливается правкой .htaccess• Подходит для shared-хостинга

11

Page 9: Client optimization drupal

Varnish

• Кэширующий прокси• Для анонимов• Модуль интеграции Varnish• Сброс кэша через purge-метод

11

Page 10: Client optimization drupal

Хостинг поближе к клиентам для региональных проектов / CDN для

международных проектов

• ping до ya.ru (RU), google.com (USA) — ~30 мс• ping до drupal.org (USA) — ~200 мс• ping до ua-ix.net.ua (UA) — ~9 мс

11

Page 11: Client optimization drupal

CDN

• Разбросан по миру• Идеален для статики• Позволяет использовать far future expiration

date для статики

11

Page 12: Client optimization drupal

gzip

• Сжатие до 70%• Идеальный вариант: сохранять результат

сжатия на диск (Javascript Aggregator в D6)

11

Page 13: Client optimization drupal

2. Ресурсы (js/css/шрифты)

11

Page 14: Client optimization drupal

Агрегация (ядро)

• 1 js на scope/group/every_page• 1 css на group/every_page• Css минифицируется• Много файлов кеша

11

Page 15: Client optimization drupal

Агрегация (core_library)

• 1 js на scope• 1 css на group• Css минифицируется ядром• Js минифицируется jsmin• Режим обучения

11

Page 16: Client optimization drupal

Хранение внешних ресурсов локально

• Web-шрифты (google fonts иногда лагает)• Сторонние js-файлы (Javasript Libraries;

возможны проблемы с document.write)

11

Page 17: Client optimization drupal

Js — вниз страницы

• Что бы не блокировать загрузку контента скриптами

• Избежать эффекта «белого сайта»

11

Page 18: Client optimization drupal

3. Статика (images/js/css/шрифты)

11

Page 19: Client optimization drupal

Спрайты/data-uri

• Меньше http-запросов• Могут генерироваться автоматически с

помощью Compass или подобных• Css embedded images для data-uri

11

Page 20: Client optimization drupal

Распараллеливание загрузки11

index.htmlimage1.jpegimage2.jpegimage3.jpegimage4.jpegimage5.jpegimage6.jpeg

Page 21: Client optimization drupal

Браузерная арифметика

• Opera 12.02: 16/64• Firefox 13.0.1: 15/256• Chrome 4+: 6/?• IE6-7: 2/?• IE8: 6/?

11

Page 22: Client optimization drupal

Поддомены для статики11

Page 23: Client optimization drupal

Nginx для статики

• Отдает статику в ~2 раза быстрее чем Apache• Может быть настроен на кэш статики в RAM

11

Page 24: Client optimization drupal

Cookie free домены

• 200-500 байт в каждую сторону, которые никогда не используются

• Поддомены если сайт с www, домены — если нет

11

Page 25: Client optimization drupal

Far future expiration date

• Реализуется модулем CDN• Уникальное имя для браузера

(site.com/cdn/farfuture/xxx/xxx/misc/throbber.gif)• Expire заголовок в будущем• CDN или пайка к Nginx

11

Page 26: Client optimization drupal

4. Lazy load

11

Page 27: Client optimization drupal

Lazyload изображений

• Перекрывает theme_image• Сохраняет настоящий путь в data-src• Заменяет картинку на 1пиксельный гиф• Показывает картинку js-ом

11

Page 28: Client optimization drupal

Ajax_blocks

• Отложенная загрузка блоков• Для определенных ролей• Сразу или через время• Получает все блоки одним ajax-запросом

11

Page 29: Client optimization drupal

Views infinite scroll

• Пейджер для Views• Грузит контент при скроле как вконтактик

11

Page 30: Client optimization drupal

Ajax pipe

• Агрегатор ajax-запросов• На клиенте поход на behaviours• На сервере hook_ajax_pipe()• Поддерживает стандартные ajax-комманды

11

Page 31: Client optimization drupal

Полезные ссылкиdrupal.org/project/boost

varnish-cache.org

drupal.org/project/varnish

drupal.org/project/core_library

drupal.org/project/javascript_libraries

drupal.org/project/lazyload

drupal.org/project/ajaxblocks

drupal.org/sandbox/taldy/1661592

Page 32: Client optimization drupal

Спасибо за внимание

Егор ТалдыкинE-mail: [email protected]: taldykin.egor