SlideShare a Scribd company logo
1 of 35
Download to read offline
Быстродействие веб-сайтаМетодичный анализ и глубины клиентской оптимизации. Евгений КотельницкийWebCamp2014, Odessa
Евгений Котельницкий+YevhenKotelnytskyi@yeeevhenhttp://4coder.info/me
План-Принципы работы WWW-На что уходит время? -Методичный анализ-Алгоритм оптимизации-Некоторые правила-Утилиты для мониторинга-Клиентская оптимизация-Психология ожидания
ПринципыработыWWW
Схема загрузки компонентов WEB-страницы 
1)Index.PHP 
2)Style.CSS 
3)jQuery.JS 
4)Image1.JPG 
5)Logo.PNG 
6)Sprite.PNG 
Text/HTML 
Text/CSS 
Image/JPEG 
Image/PNG 
Image/PNG 
Text/JavaScript
Детальнее…
Время загрузки HTML –5% от общего * 
* По данным компании Yahoo
На что уходит время?
Загрузка веб-страницы 
Этап 
«Виновник» 
1 
Ожидание в очереди 
HTTP спец. 
2 
DNS Lookup 
Сеть 
3 
Открытие TCP/IP соединения 
Сеть 
4 
Отправка HTTP запроса 
Сеть 
5 
Разбор запроса сервером 
Сервер 
6 
Формирование ответа 
Сервер 
7 
Компрессия ответа (1) 
Сервер 
8 
Пересылка ответа 
Сеть 
9 
Распаковка ответа (1) 
Браузер 
10 
Представление ответа 
Браузер 
11 
Закрытие соединения? (2) 
HTTP спец. 
12 
Отправка следующего запроса(3) 
HTML 
1)Если компрессия включена 
2)Соединение не закрывается -ждём следующий запрос 
3) Если для представления требуются другие компоненты
Мы можем уменьшить задержкина каждом этапе 
Этап 
Оптимизация 
1 
Ожидание в очереди 
Уменьшить количество компонентов 
2 
DNS Lookup 
Уменьшить количество различных доменов 
3 
Открытие TCP/IP соединения 
Использовать сервера, которые географически ближе 
4 
Отправка HTTP запроса 
Минимизировать размер шапки запроса (Cookies) 
5 
Разбор запроса сервером 
Настройка / оптимизация сервера 
6 
Формирование ответа 
Зависит от типа компонента 
7 
Компрессия ответа (1) 
Отключить компрессию? А как же пункт 8? 
8 
Пересылка ответа 
Минимизировать размер ответа 
9 
Распаковка ответа (1) 
См. п. 7 
10 
Представление ответа 
Оптимизировать HTML, CSS, JS и д.р. 
11 
Закрытие соединения? (2) 
К счастью, соединение не закрывается в HTTP 1.1 
12 
Отправка следующего запроса (3) 
Минимизировать кол-во компонентов и редиректов
Методичныйанализ
КлиентРазработчикУтрированный пример из жизни
Некоторые правила Ищем узкие места(учитываем приоритеты) Советы могут противоречить Стандартные приёмы могут усугубить ситуацию Учитываем задержки «без попадания в кэш»
1.Собираем симптомы 
2.Формулируем цели 
3.Определяем узкие места 
4.Составляем список задач 
5.Оцениваем ожидаемый эффект 
6.Оцениваем затраты 
7.Расставляем приоритеты 
8.Анализируем эффект 
9.Выполняем итерационноАлгоритм оптимизации
Firebug + Yahoo Yslow Google Chrome PageSpeed Google Chrome Developer Tools PingdomPerformance Tools Google AnalyticsУтилиты для мониторинга
Клиентская оптимизация
Минимизируем количество HTTP-запросов 
1.DNS Lookup 
2.Открытие TCP/IP соединения 
3.Отправка HTTP запроса 
4.Разбор запроса сервером 
5.Генерацияответа 
6.Компрессия ответа 
7.Пересылка ответа 
8.Распаковка ответа 
9.Представление ответа
Редиректынежелательны
404 -некорректныеURL-адреса
Минимизация объёма данных, пересылаемых по сети Компрессия иМинификация Gzipкомпрессия YUI Compressor (JS / CSS) Что целесообразно «архивировать»? Минимизация размера медиа-файлов Минимизацияразмера HTTP-заголовка
Какие компоненты целесообразно «архивировать»? 
AddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE text/javascriptAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE application/xhtml+xmlAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/rss+xmlAddOutputFilterByType DEFLATE application/atom_xmlAddOutputFilterByType DEFLATE application/x-javascriptAddOutputFilterByType DEFLATE application/x-httpd-phpAddOutputFilterByType DEFLATE application/x-httpd-fastphpAddOutputFilterByType DEFLATE application/x-httpd-erubyAddOutputFilterByType DEFLATE image/svg+xmlНастройка “mod_deflate” для Apache:
Нагрузка на сервер от Gzipкомпрессии
GzipvsYUI Compressor. Степень сжатия JavaScript
Оптимизация компонентов /HTML 
Уменьшим количество DOM-элементов 
Реже используем <iframe/>
Оптимизация компонентов /CSS 
Используем <link> вместо @import; 
Оптимизируем селекторы; 
Избавляемся от CSS Expressions; 
Не копируем бездумно код.
Оптимизация компонентов / Изображения
«Экономный» способ сохранения.jpg для Retina1.Готовим изображение в 2 раза больше требуемого2.Сохраняем как .jpg с высокой компрессией (качество 30 -40%) 3.Уменьшаем размеры изображения в 2 раза с помощью CSS/ HTML4.Внешнее качество такой картинки повысится, а размер останется тем же 
Оригинальный размер 
Качество 80% 
Размер 10Kb 
Картинка в 2 разабольше 
Качество 40% 
Размер 11Kb 
Картинка в 2 разабольше 
Качество 80% 
Размер 60Kb
Оптимизация компонентов / JavaScript 
Отладка JavaScript в Google Chrome 
Показываем статус долгого процесса 
Не ждём чуда или «ТаймАут» 
Preload 
Lazy Load 
Ajax Post-load
Кэширование компонентов браузером 
Expires илиCache-Control 
Last-Modified/ If-Modified-Since 
HTTP Etag(entity tag) 
Кэширование AJAX-запросов
Кэширование компонентов браузером 
GET /encrypted-area HTTP/1.1 
Host: www.example.com 
Accept-Encoding: gzip, deflate 
HTTP/1.1 200 OK 
Date: Mon, 23 May 2005 22:38:34 GMT 
Server: Apache/1.3.3.7 (Unix) (Red- Hat/Linux) 
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT 
Etag: "3f80f-1b6-3e1cb03b" 
Accept-Ranges: bytes 
Content-Length: 438 
Connection: close 
Content-Type: text/html; charset=UTF-8 
Content-Encoding: gzipЗаголовок запросаЗаголовок ответа
Сеть 
Параллельная загрузка компонентов 
Минимум различных доменов 
CDN(Content Delivery Network) 
Сookie-free domains
Психология ожидания 
“Loading”-анимация 
Progress bar
Вопросы?
Спасибо!
Материалы: 
http://developer.yahoo.com/performance/rules.html/ 
http://developer.yahoo.com/blogs/ydn/posts/2007/03/high_performanc/ 
http://webo.in/articles/habrahabr/30-gzip-versus-broadband/ 
http://developer.yahoo.com/yui/compressor/ 
http://www.appelsiini.net/projects/lazyload/ Утилиты: 
1.http://developer.yahoo.com/yslow/ 
2.https://developers.google.com/speed/pagespeed/ 
3.http://tools.pingdom.com/fpt/ 
4.http://refresh-sf.com/yui/ 
5.http://www.smushit.com/ysmush.it/

More Related Content

What's hot

How to optimize Magento
How to optimize MagentoHow to optimize Magento
How to optimize MagentoMageCloud
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Lviv Startup Club
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Mail.ru Group
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизацияNoveo
 
Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.iProspect Russia
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаdavertmik
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияMedia Gorod
 
оптимизация скорости загрузки страницы
оптимизация скорости загрузки страницыоптимизация скорости загрузки страницы
оптимизация скорости загрузки страницыVladimir Romanitchev
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ontico
 
скорость загрузки
скорость загрузкискорость загрузки
скорость загрузкиAlexei Smolyanov
 
DDоS практическое руководство к выживанию (Александр Лямин)
DDоS практическое руководство к выживанию (Александр Лямин)DDоS практическое руководство к выживанию (Александр Лямин)
DDоS практическое руководство к выживанию (Александр Лямин)Ontico
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратораNikolay Sivko
 

What's hot (15)

How to optimize Magento
How to optimize MagentoHow to optimize Magento
How to optimize Magento
 
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
Кузьмін Віталій “Оптимізація і конфігурування Magento для високонавантажених ...
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
Использование Python для построения сетевых моделей, Алексей Лобозов, ГК «Про...
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.Андрей Фейгин. GTM Словами агентства.
Андрей Фейгин. GTM Словами агентства.
 
Pavel Dovbush Toster
Pavel Dovbush Toster Pavel Dovbush Toster
Pavel Dovbush Toster
 
TestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщикаTestGuy - эмулируем вашего тестировщика
TestGuy - эмулируем вашего тестировщика
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решения
 
Скорость работы интернет магазина
Скорость работы интернет магазинаСкорость работы интернет магазина
Скорость работы интернет магазина
 
оптимизация скорости загрузки страницы
оптимизация скорости загрузки страницыоптимизация скорости загрузки страницы
оптимизация скорости загрузки страницы
 
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
Ускоряем исследования с помощью конкурсов как их готовить и выигрывать / Иван...
 
скорость загрузки
скорость загрузкискорость загрузки
скорость загрузки
 
DDоS практическое руководство к выживанию (Александр Лямин)
DDоS практическое руководство к выживанию (Александр Лямин)DDоS практическое руководство к выживанию (Александр Лямин)
DDоS практическое руководство к выживанию (Александр Лямин)
 
Диагностика postgresql для системного администратора
Диагностика postgresql для системного администратораДиагностика postgresql для системного администратора
Диагностика postgresql для системного администратора
 

Similar to WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины клиентской оптимизации - Евгений Котельницкий

Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...SQALab
 
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Лавлинский Николай
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Ontico
 
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Николай Лавлинский
 
рит2007 оптимизация бд бесков доронин
рит2007   оптимизация бд   бесков доронинрит2007   оптимизация бд   бесков доронин
рит2007 оптимизация бд бесков доронинMedia Gorod
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsLEDC 2016
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Ontico
 
1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshovelenae00
 
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностью
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностьюWebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностью
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностьюWebCamp
 
Аудит сайта Moviespictures.net
Аудит сайта Moviespictures.netАудит сайта Moviespictures.net
Аудит сайта Moviespictures.netkostetskiy
 
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Andrey Listochkin
 
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Eugene Chekan
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложенийYandex
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Ontico
 
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазина
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазинадмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазина
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазинаshoplistconf
 
Аудит Domstroy.com.ua
Аудит Domstroy.com.uaАудит Domstroy.com.ua
Аудит Domstroy.com.uakostetskiy
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Ontico
 

Similar to WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины клиентской оптимизации - Евгений Котельницкий (20)

Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...Использование встроенных или подключаемых средств браузеров для тестирования ...
Использование встроенных или подключаемых средств браузеров для тестирования ...
 
Highload++ 2015
Highload++ 2015Highload++ 2015
Highload++ 2015
 
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
Highload++ 2016: Автоматизация тестирования клиентской производительности (Ла...
 
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
 
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...Автоматизация тестирования клиентской производительности - Лавлинский Николай...
Автоматизация тестирования клиентской производительности - Лавлинский Николай...
 
рит2007 оптимизация бд бесков доронин
рит2007   оптимизация бд   бесков доронинрит2007   оптимизация бд   бесков доронин
рит2007 оптимизация бд бесков доронин
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
 
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
Настройка и оптимизация высоконагруженных J2EE веб-приложений / Шамим Ахмед (...
 
1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov1 2 2_1_c-bitrix_kuleshov
1 2 2_1_c-bitrix_kuleshov
 
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностью
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностьюWebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностью
WebCamp2016:Front-End_Андрей Копёнкин_Оптимизируем мобильный веб полностью
 
Аудит сайта Moviespictures.net
Аудит сайта Moviespictures.netАудит сайта Moviespictures.net
Аудит сайта Moviespictures.net
 
Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014Ember.js - Назад в Будущее - Odessa JS 2014
Ember.js - Назад в Будущее - Odessa JS 2014
 
Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]Web performance 101 [GDG nsk webdev meetup #3]
Web performance 101 [GDG nsk webdev meetup #3]
 
2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений2013 09 17 архитектура веб-приложений
2013 09 17 архитектура веб-приложений
 
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
Мониторинг веб-проектов real-time мониторинг и аналитика, поиск ошибок и боев...
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазина
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазинадмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазина
дмитрий суслов 2013.04.19, бус, ускоряем работу интернет-магазина
 
Аудит Domstroy.com.ua
Аудит Domstroy.com.uaАудит Domstroy.com.ua
Аудит Domstroy.com.ua
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 

More from GeeksLab Odessa

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...GeeksLab Odessa
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...GeeksLab Odessa
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторGeeksLab Odessa
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеGeeksLab Odessa
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...GeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладGeeksLab Odessa
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...GeeksLab Odessa
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...GeeksLab Odessa
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко GeeksLab Odessa
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...GeeksLab Odessa
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...GeeksLab Odessa
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...GeeksLab Odessa
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...GeeksLab Odessa
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...GeeksLab Odessa
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...GeeksLab Odessa
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот GeeksLab Odessa
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...GeeksLab Odessa
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js GeeksLab Odessa
 

More from GeeksLab Odessa (20)

DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
DataScience Lab2017_Коррекция геометрических искажений оптических спутниковых...
 
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
DataScience Lab 2017_Kappa Architecture: How to implement a real-time streami...
 
DataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский ВикторDataScience Lab 2017_Блиц-доклад_Турский Виктор
DataScience Lab 2017_Блиц-доклад_Турский Виктор
 
DataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображениеDataScience Lab 2017_Обзор методов детекции лиц на изображение
DataScience Lab 2017_Обзор методов детекции лиц на изображение
 
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
DataScienceLab2017_Сходство пациентов: вычистка дубликатов и предсказание про...
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-докладDataScienceLab2017_Блиц-доклад
DataScienceLab2017_Блиц-доклад
 
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
DataScienceLab2017_Cервинг моделей, построенных на больших данных с помощью A...
 
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
DataScienceLab2017_BioVec: Word2Vec в задачах анализа геномных данных и биоин...
 
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
DataScienceLab2017_Data Sciences и Big Data в Телекоме_Александр Саенко
 
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
DataScienceLab2017_Высокопроизводительные вычислительные возможности для сист...
 
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
DataScience Lab 2017_Мониторинг модных трендов с помощью глубокого обучения и...
 
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
DataScience Lab 2017_Кто здесь? Автоматическая разметка спикеров на телефонны...
 
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
DataScience Lab 2017_From bag of texts to bag of clusters_Терпиль Евгений / П...
 
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
DataScience Lab 2017_Графические вероятностные модели для принятия решений в ...
 
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
DataScienceLab2017_Оптимизация гиперпараметров машинного обучения при помощи ...
 
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
DataScienceLab2017_Как знать всё о покупателях (или почти всё)?_Дарина Перемот
 
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
JS Lab 2017_Mapbox GL: как работают современные интерактивные карты_Владимир ...
 
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
JS Lab2017_Под микроскопом: блеск и нищета микросервисов на node.js
 

WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины клиентской оптимизации - Евгений Котельницкий

  • 1. Быстродействие веб-сайтаМетодичный анализ и глубины клиентской оптимизации. Евгений КотельницкийWebCamp2014, Odessa
  • 3. План-Принципы работы WWW-На что уходит время? -Методичный анализ-Алгоритм оптимизации-Некоторые правила-Утилиты для мониторинга-Клиентская оптимизация-Психология ожидания
  • 5. Схема загрузки компонентов WEB-страницы 1)Index.PHP 2)Style.CSS 3)jQuery.JS 4)Image1.JPG 5)Logo.PNG 6)Sprite.PNG Text/HTML Text/CSS Image/JPEG Image/PNG Image/PNG Text/JavaScript
  • 7. Время загрузки HTML –5% от общего * * По данным компании Yahoo
  • 9. Загрузка веб-страницы Этап «Виновник» 1 Ожидание в очереди HTTP спец. 2 DNS Lookup Сеть 3 Открытие TCP/IP соединения Сеть 4 Отправка HTTP запроса Сеть 5 Разбор запроса сервером Сервер 6 Формирование ответа Сервер 7 Компрессия ответа (1) Сервер 8 Пересылка ответа Сеть 9 Распаковка ответа (1) Браузер 10 Представление ответа Браузер 11 Закрытие соединения? (2) HTTP спец. 12 Отправка следующего запроса(3) HTML 1)Если компрессия включена 2)Соединение не закрывается -ждём следующий запрос 3) Если для представления требуются другие компоненты
  • 10. Мы можем уменьшить задержкина каждом этапе Этап Оптимизация 1 Ожидание в очереди Уменьшить количество компонентов 2 DNS Lookup Уменьшить количество различных доменов 3 Открытие TCP/IP соединения Использовать сервера, которые географически ближе 4 Отправка HTTP запроса Минимизировать размер шапки запроса (Cookies) 5 Разбор запроса сервером Настройка / оптимизация сервера 6 Формирование ответа Зависит от типа компонента 7 Компрессия ответа (1) Отключить компрессию? А как же пункт 8? 8 Пересылка ответа Минимизировать размер ответа 9 Распаковка ответа (1) См. п. 7 10 Представление ответа Оптимизировать HTML, CSS, JS и д.р. 11 Закрытие соединения? (2) К счастью, соединение не закрывается в HTTP 1.1 12 Отправка следующего запроса (3) Минимизировать кол-во компонентов и редиректов
  • 13. Некоторые правила Ищем узкие места(учитываем приоритеты) Советы могут противоречить Стандартные приёмы могут усугубить ситуацию Учитываем задержки «без попадания в кэш»
  • 14. 1.Собираем симптомы 2.Формулируем цели 3.Определяем узкие места 4.Составляем список задач 5.Оцениваем ожидаемый эффект 6.Оцениваем затраты 7.Расставляем приоритеты 8.Анализируем эффект 9.Выполняем итерационноАлгоритм оптимизации
  • 15. Firebug + Yahoo Yslow Google Chrome PageSpeed Google Chrome Developer Tools PingdomPerformance Tools Google AnalyticsУтилиты для мониторинга
  • 17. Минимизируем количество HTTP-запросов 1.DNS Lookup 2.Открытие TCP/IP соединения 3.Отправка HTTP запроса 4.Разбор запроса сервером 5.Генерацияответа 6.Компрессия ответа 7.Пересылка ответа 8.Распаковка ответа 9.Представление ответа
  • 20. Минимизация объёма данных, пересылаемых по сети Компрессия иМинификация Gzipкомпрессия YUI Compressor (JS / CSS) Что целесообразно «архивировать»? Минимизация размера медиа-файлов Минимизацияразмера HTTP-заголовка
  • 21. Какие компоненты целесообразно «архивировать»? AddOutputFilterByType DEFLATE text/htmlAddOutputFilterByType DEFLATE text/plainAddOutputFilterByType DEFLATE text/xmlAddOutputFilterByType DEFLATE text/cssAddOutputFilterByType DEFLATE text/javascriptAddOutputFilterByType DEFLATE application/javascriptAddOutputFilterByType DEFLATE application/xhtml+xmlAddOutputFilterByType DEFLATE application/xmlAddOutputFilterByType DEFLATE application/rss+xmlAddOutputFilterByType DEFLATE application/atom_xmlAddOutputFilterByType DEFLATE application/x-javascriptAddOutputFilterByType DEFLATE application/x-httpd-phpAddOutputFilterByType DEFLATE application/x-httpd-fastphpAddOutputFilterByType DEFLATE application/x-httpd-erubyAddOutputFilterByType DEFLATE image/svg+xmlНастройка “mod_deflate” для Apache:
  • 22. Нагрузка на сервер от Gzipкомпрессии
  • 23. GzipvsYUI Compressor. Степень сжатия JavaScript
  • 24. Оптимизация компонентов /HTML Уменьшим количество DOM-элементов Реже используем <iframe/>
  • 25. Оптимизация компонентов /CSS Используем <link> вместо @import; Оптимизируем селекторы; Избавляемся от CSS Expressions; Не копируем бездумно код.
  • 27. «Экономный» способ сохранения.jpg для Retina1.Готовим изображение в 2 раза больше требуемого2.Сохраняем как .jpg с высокой компрессией (качество 30 -40%) 3.Уменьшаем размеры изображения в 2 раза с помощью CSS/ HTML4.Внешнее качество такой картинки повысится, а размер останется тем же Оригинальный размер Качество 80% Размер 10Kb Картинка в 2 разабольше Качество 40% Размер 11Kb Картинка в 2 разабольше Качество 80% Размер 60Kb
  • 28. Оптимизация компонентов / JavaScript Отладка JavaScript в Google Chrome Показываем статус долгого процесса Не ждём чуда или «ТаймАут» Preload Lazy Load Ajax Post-load
  • 29. Кэширование компонентов браузером Expires илиCache-Control Last-Modified/ If-Modified-Since HTTP Etag(entity tag) Кэширование AJAX-запросов
  • 30. Кэширование компонентов браузером GET /encrypted-area HTTP/1.1 Host: www.example.com Accept-Encoding: gzip, deflate HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.3.7 (Unix) (Red- Hat/Linux) Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Content-Encoding: gzipЗаголовок запросаЗаголовок ответа
  • 31. Сеть Параллельная загрузка компонентов Минимум различных доменов CDN(Content Delivery Network) Сookie-free domains
  • 35. Материалы: http://developer.yahoo.com/performance/rules.html/ http://developer.yahoo.com/blogs/ydn/posts/2007/03/high_performanc/ http://webo.in/articles/habrahabr/30-gzip-versus-broadband/ http://developer.yahoo.com/yui/compressor/ http://www.appelsiini.net/projects/lazyload/ Утилиты: 1.http://developer.yahoo.com/yslow/ 2.https://developers.google.com/speed/pagespeed/ 3.http://tools.pingdom.com/fpt/ 4.http://refresh-sf.com/yui/ 5.http://www.smushit.com/ysmush.it/