SlideShare a Scribd company logo
1 of 32
Клиентская оптимизация
       Егор Талдыкин
       Ardas Group Inc.
Среднее
   время
 загрузки
страницы




                              ~5-6c
        Dial-up   DSL   LAN
Рендеринг (~8%)          Генерация HTML (~10%)




       Загрузка ресурсов/статики(~82%)
Направления оптимизации
1.   Генерация и доставка HTML
2.   Ресурсы (js/css/fonts)
3.   Статический контент (images/js/css)
4.   Lazyload (images/blocks/etc)
1




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


Встроенное кэширование ядра и
           модулей
• Pagecache
• Blocks
• Views
1


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


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


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


 Хостинг поближе к клиентам для
региональных проектов / CDN для
    международных проектов
• ping до ya.ru (RU), google.com (USA) — ~30 мс
• ping до drupal.org (USA) — ~200 мс
• ping до ua-ix.net.ua (UA) — ~9 мс
1


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


                     gzip
• Сжатие до 70%
• Идеальный вариант: сохранять результат
  сжатия на диск (Javascript Aggregator в D6)
1




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


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


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


   Хранение внешних ресурсов
           локально
• Web-шрифты (google fonts иногда лагает)
• Сторонние js-файлы (Javasript Libraries;
  возможны проблемы с document.write)
1



         Js — вниз страницы
• Что бы не блокировать загрузку контента
  скриптами
• Избежать эффекта «белого сайта»
1




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


           Спрайты/data-uri
• Меньше http-запросов
• Могут генерироваться автоматически с
  помощью Compass или подобных
• Css embedded images для data-uri
1


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

   index.html
 image1.jpeg
 image2.jpeg
 image3.jpeg
 image4.jpeg
 image5.jpeg
 image6.jpeg
1


         Браузерная арифметика
•   Opera 12.02: 16/64
•   Firefox 13.0.1: 15/256
•   Chrome 4+: 6/?
•   IE6-7: 2/?
•   IE8: 6/?
1


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


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


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


       Far future expiration date
• Реализуется модулем CDN
• Уникальное имя для браузера
  (site.com/cdn/farfuture/xxx/xxx/misc/throbber.gif)
• Expire заголовок в будущем
• CDN или пайка к Nginx
1




4. Lazy load
1


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


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


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


                 Ajax pipe
•   Агрегатор ajax-запросов
•   На клиенте поход на behaviours
•   На сервере hook_ajax_pipe()
•   Поддерживает стандартные ajax-комманды
Полезные ссылки
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
Спасибо за внимание



Егор Талдыкин
E-mail: egor.taldykin@ardas.dp.ua
Skype: taldykin.egor

More Related Content

What's hot

Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, PerconaOntico
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)Ontico
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Колёса Крыша Маркет
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Ontico
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Ontico
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)Ontico
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеAlexandr Krasheninnikov
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Mad Devs
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Andrey Smirnov
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Tanya Denisyuk
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in RussianOleg Kachan
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Ontico
 
хостинг
хостингхостинг
хостингtufelka
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС 2ГИС Технологии
 

What's hot (18)

Пётр Зайцев, Percona
Пётр Зайцев, PerconaПётр Зайцев, Percona
Пётр Зайцев, Percona
 
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
NAS, Predictions, Preloading, Presudo-Isomorphism / Охрименко Алексей (Acronis)
 
No sql.mongodb scaling
No sql.mongodb scalingNo sql.mongodb scaling
No sql.mongodb scaling
 
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
Самые частые проблемы и пути решения при росте нагрузки и масштабировании про...
 
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
Tempesta FW: challenges, internals, use cases / Александр Крижановский (Tempe...
 
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
Как считать и анализировать сотни гигабит трафика в секунду, Станислав Николо...
 
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)Путь от монолита на PHP к микросервисам на Scala  / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
 
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проектеNear-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
 
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
Tech Talks @NSU: Что такое Highload? Секреты высокой нагрузки.
 
Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)Клиентские приложения под нагрузкой (HighLoad 2014)
Клиентские приложения под нагрузкой (HighLoad 2014)
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"Вадим Мадисон "Опыт разработки через микросервисы"
Вадим Мадисон "Опыт разработки через микросервисы"
 
MongoDB basics in Russian
MongoDB basics in RussianMongoDB basics in Russian
MongoDB basics in Russian
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
хостинг
хостингхостинг
хостинг
 
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС «Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
«Путь от монолита на PHP к микросервисам на Scala» – Денис Иванов, 2ГИС
 

Viewers also liked

10 strange issues in Drupal or why clients don't like Drupal
10 strange issues in Drupal or why clients don't like Drupal10 strange issues in Drupal or why clients don't like Drupal
10 strange issues in Drupal or why clients don't like DrupalYury Glushkov
 
Removing superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxRemoving superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxYury Glushkov
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupalYury Glushkov
 
Create payment systems for Drupal Commerce
Create payment systems for Drupal CommerceCreate payment systems for Drupal Commerce
Create payment systems for Drupal CommerceYury Glushkov
 
Enfoque clásico de la administración
Enfoque clásico de la administraciónEnfoque clásico de la administración
Enfoque clásico de la administraciónGuillermo A.
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 

Viewers also liked (9)

10 strange issues in Drupal or why clients don't like Drupal
10 strange issues in Drupal or why clients don't like Drupal10 strange issues in Drupal or why clients don't like Drupal
10 strange issues in Drupal or why clients don't like Drupal
 
Drupal vs ubercart
Drupal vs ubercartDrupal vs ubercart
Drupal vs ubercart
 
Removing superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajaxRemoving superfluous page loads, or a few more words about popups and ajax
Removing superfluous page loads, or a few more words about popups and ajax
 
Server optimization
Server optimizationServer optimization
Server optimization
 
Jquery selector optimization in drupal
Jquery selector optimization in drupalJquery selector optimization in drupal
Jquery selector optimization in drupal
 
Create payment systems for Drupal Commerce
Create payment systems for Drupal CommerceCreate payment systems for Drupal Commerce
Create payment systems for Drupal Commerce
 
Enfoque CláSico
Enfoque CláSicoEnfoque CláSico
Enfoque CláSico
 
Enfoque clásico de la administración
Enfoque clásico de la administraciónEnfoque clásico de la administración
Enfoque clásico de la administración
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 

Similar to Client optimization drupal

Как сделать сайт быстрее?
Как сделать сайт быстрее?Как сделать сайт быстрее?
Как сделать сайт быстрее?Danil Negrienko
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalVlad Savitsky
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Tanya Denisyuk
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?aragozin
 
Создание темы «с нуля»
Создание темы «с нуля»Создание темы «с нуля»
Создание темы «с нуля»Artem Shymko
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDAndrew Pantyukhin
 
Инфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME WhereoilИнфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME WhereoilVsevolod Shabad
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). Badoo Development
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)Ontico
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Ontico
 
Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’aDelphiCon
 

Similar to Client optimization drupal (20)

Как сделать сайт быстрее?
Как сделать сайт быстрее?Как сделать сайт быстрее?
Как сделать сайт быстрее?
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
Оптимизация JavaScript в Drupal
Оптимизация JavaScript в DrupalОптимизация JavaScript в Drupal
Оптимизация JavaScript в Drupal
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 
Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?Распределённый кэш или хранилище данных. Что выбрать?
Распределённый кэш или хранилище данных. Что выбрать?
 
Создание темы «с нуля»
Создание темы «с нуля»Создание темы «с нуля»
Создание темы «с нуля»
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
Isilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSDIsilapp — Extreme Cloud Storage on FreeBSD
Isilapp — Extreme Cloud Storage on FreeBSD
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
Инфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME WhereoilИнфраструктура хранения для KADME Whereoil
Инфраструктура хранения для KADME Whereoil
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
Прогрессивный рендеринг и Catberry.js / Михаил Реенко (2GIS / Flamp)
 
Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’a
 

Client optimization drupal

  • 1. Клиентская оптимизация Егор Талдыкин Ardas Group Inc.
  • 2. Среднее время загрузки страницы ~5-6c Dial-up DSL LAN
  • 3. Рендеринг (~8%) Генерация HTML (~10%) Загрузка ресурсов/статики(~82%)
  • 4. Направления оптимизации 1. Генерация и доставка HTML 2. Ресурсы (js/css/fonts) 3. Статический контент (images/js/css) 4. Lazyload (images/blocks/etc)
  • 5. 1 1. Генерация и доставка HTML
  • 6. 1 Встроенное кэширование ядра и модулей • Pagecache • Blocks • Views
  • 7. 1 Кэширование в коде • drupal_static • cache_get/cache_set • Кэширование в renderable arrays • Entity cache
  • 8. 1 Boost • Кэш для анонимов • Хранит кэш в файлах • Устанавливается правкой .htaccess • Подходит для shared-хостинга
  • 9. 1 Varnish • Кэширующий прокси • Для анонимов • Модуль интеграции Varnish • Сброс кэша через purge-метод
  • 10. 1 Хостинг поближе к клиентам для региональных проектов / CDN для международных проектов • ping до ya.ru (RU), google.com (USA) — ~30 мс • ping до drupal.org (USA) — ~200 мс • ping до ua-ix.net.ua (UA) — ~9 мс
  • 11. 1 CDN • Разбросан по миру • Идеален для статики • Позволяет использовать far future expiration date для статики
  • 12. 1 gzip • Сжатие до 70% • Идеальный вариант: сохранять результат сжатия на диск (Javascript Aggregator в D6)
  • 14. 1 Агрегация (ядро) • 1 js на scope/group/every_page • 1 css на group/every_page • Css минифицируется • Много файлов кеша
  • 15. 1 Агрегация (core_library) • 1 js на scope • 1 css на group • Css минифицируется ядром • Js минифицируется jsmin • Режим обучения
  • 16. 1 Хранение внешних ресурсов локально • Web-шрифты (google fonts иногда лагает) • Сторонние js-файлы (Javasript Libraries; возможны проблемы с document.write)
  • 17. 1 Js — вниз страницы • Что бы не блокировать загрузку контента скриптами • Избежать эффекта «белого сайта»
  • 19. 1 Спрайты/data-uri • Меньше http-запросов • Могут генерироваться автоматически с помощью Compass или подобных • Css embedded images для data-uri
  • 20. 1 Распараллеливание загрузки index.html image1.jpeg image2.jpeg image3.jpeg image4.jpeg image5.jpeg image6.jpeg
  • 21. 1 Браузерная арифметика • Opera 12.02: 16/64 • Firefox 13.0.1: 15/256 • Chrome 4+: 6/? • IE6-7: 2/? • IE8: 6/?
  • 23. 1 Nginx для статики • Отдает статику в ~2 раза быстрее чем Apache • Может быть настроен на кэш статики в RAM
  • 24. 1 Cookie free домены • 200-500 байт в каждую сторону, которые никогда не используются • Поддомены если сайт с www, домены — если нет
  • 25. 1 Far future expiration date • Реализуется модулем CDN • Уникальное имя для браузера (site.com/cdn/farfuture/xxx/xxx/misc/throbber.gif) • Expire заголовок в будущем • CDN или пайка к Nginx
  • 27. 1 Lazyload изображений • Перекрывает theme_image • Сохраняет настоящий путь в data-src • Заменяет картинку на 1пиксельный гиф • Показывает картинку js-ом
  • 28. 1 Ajax_blocks • Отложенная загрузка блоков • Для определенных ролей • Сразу или через время • Получает все блоки одним ajax-запросом
  • 29. 1 Views infinite scroll • Пейджер для Views • Грузит контент при скроле как вконтактик
  • 30. 1 Ajax pipe • Агрегатор ajax-запросов • На клиенте поход на behaviours • На сервере hook_ajax_pipe() • Поддерживает стандартные ajax-комманды
  • 32. Спасибо за внимание Егор Талдыкин E-mail: egor.taldykin@ardas.dp.ua Skype: taldykin.egor