SlideShare a Scribd company logo
1 of 20
index. art
75% пользователей уйдут с сайта после
10 секунд ожидания
Максимально приемлемое время
ожидания – не более 4 секунд
Размер страниц постоянно растет…
что делать?
CENSORED
1. Картинки: оптимизация и подбор формата.
Полноцвет в JPG, остальное в GIF / PNG
Мелкие изображения собираем в спрайты.
2. CSS и JavaScript: уменьшение кода.
Прогон через оптимизаторы и
обфускаторы.
3. HTML: минимизация элементов DOM,
максимальная его подготовка без динамики
4. CSS / inline CSS: в HEADER
5. JS / inline JS: нужное – в HEADER
Остальное в конец HTML или вообще
после onLoad / по требованию.
Используем, где только возможно
асинхронную загрузку по требованию
6. Расположение элементов в HTML
Экспериментируем, меряем скорость,
определяем оптимальные положения
Минимизация количества подгружаемого
В идеале должно быть:
• 1 JavaScript-файл
• 1 CSS-файл
• 1 HTML
• остальное на картинки
Не боимся использовать inline
Лучше 1 большой файл чем 2 и более мелких
Лучше избыточность, уходящая в кэш,
чем подгрузки на каждой странице
Автосклейка на сервере
<script src=“/glue/a-a.js--b-b.js” />
<script src=“/a/a.js” />
<script src=“/b/b.js” />
ОСОБЕННОСТИ
“-” == “/”
“--” == разделитель файлов
.js надо склеивать через “;”
ПОМНИТЕ О БЕЗОПАСНОСТИ
Проверяйте что и как
склеивается:
1. допустимые источники
2. допустимые файлы
3. допустимый порядок
# LAST mean LAST ;)
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* - [L]
# DEF CHARSET .js / .css
AddDefaultCharset windows-1251
AddCharset windows-1251 .js
AddCharset windows-1251 .css
# GLUE
RewriteCond %{REQUEST_URI} ^/glue/(.+)$
RewriteCond %{DOCUMENT_ROOT}/glue/%1 -f
RewriteRule . /glue/%1 [L]
…
RewriteRule ^.*$ index.php [L]
.htaccess
Почти все современные браузеры
поддерживают GZIP сжатие
Если есть возможность – используем
Apache mod_deflate.
Однако у большинства хостеров он
отключен
что делать?
Сделаем свой!
С блэкджеком и …
В наш обработчик склеивания добавим
возможность сжатия – т.е. к файлу, который
он формирует положим рядом такой же, но
сжатый с добавлением “.gz”
/glue/a-a.js--b-b.js
/glue/a-a.js--b-b.js.gz
/glue/a-a.js--b-b.js
PHP, сжатие данных:
$gzipped = gzencode( $content, 6 );
6 – оптимальная степень сжатия
по нагрузке / качеству
PHP, сжатие output:
ob_start( "ob_gzhandler" );
echo( $content );
ob_end_flush();
Помните о браузерах, не поддерживающих сжатие!!!
Обязательно проверяйте, и если не поддерживается – отдавайте не сжатое.
function isClientSupportGzip() {
if ( headers_sent() || connection_aborted() ) return false;
if ( stripos( getenv( "HTTP_ACCEPT_ENCODING" ), "gzip" ) === false ) return false;
if ( stripos( getenv( "HTTP_USER_AGENT" ), "konqueror" ) !== false ) return false;
return true;
}
AddEncoding gzip .gz
<FilesMatch ".js.gz$">
#for proxies
Header set Cache-control: private
Header append Vary User-Agent
ForceType "text/javascript; content=windows-1251"
Header set Content-Encoding: gzip
AddCharset windows-1251 .js.gz
</FilesMatch>
<FilesMatch ".css.gz$">
#for proxies
Header set Cache-control: private
Header append Vary User-Agent
ForceType "text/css; content=windows-1251"
Header set Content-Encoding: gzip
</FilesMatch>
RewriteCond %{REQUEST_URI} ^/glue/(.+)$
RewriteCond %{DOCUMENT_ROOT}/glue/%1.gz -f
RewriteCond %{HTTP:Accept-Encoding} ^.*?gzip.*$ [NC]
RewriteCond %{HTTP_USER_AGENT} !^konqueror [NC]
RewriteRule ^siteglue/(.*)$ /glue/$1.gz [L]
#for not supported GZIP
RewriteCond %{REQUEST_URI} ^/glue/(.+)$
RewriteCond %{DOCUMENT_ROOT}/glue/%1 -f
RewriteRule . /
glue/%1 [L]
.htaccess
добавление
1. Всю статику отдавать через web-сервер
возможно через nginx / lighthttpd
2. Обязательно включить кэширование
3. .htaccess правила для favicon из корня сайта
4. Корректная обработка 404 / 301
<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 604800 seconds"
</ifModule>
<ifModule mod_headers.c>
Header unset Cache-Control
Header set Cache-Control "max-age=604800, public"
</ifModule>
1. YUI Compressor – сжатие CSS / JS
developer.yahoo.com/yui/compressor
2. Firebug – сеть, DOM и т.д.
getfirebug.com
3. Google Page Speed – комплексный анализ
developers.google.com/speed/pagespeed
1. WEBO Labs
webo.in
2. Реактивные вебсайты
speedupyourwebsite.ru
3. 28 способов оптимизации
webzblog.com/28-sposobov-optimizacii-skorosti-
zagruzki-sajta
4. JS Perfomance
www.slideshare.net/souders/javascript-performance-
at-sfjs
5. ktonanovenkogo.ru/vokrug-da-okolo/skorost-
zagruzki/kak-uvelichit-skorost-zagruzki-sajta-
optimizaciya-nagruzki-na-server.html
Битва за миллисекунды: практика ускорения веб сайтов

More Related Content

What's hot

HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиентыRoman Brovko
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...Ontico
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backendRoman Brovko
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDaysdavertmik
 
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
 
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизацияRoman Brovko
 
Как сделать сайт быстрее?
Как сделать сайт быстрее?Как сделать сайт быстрее?
Как сделать сайт быстрее?Danil Negrienko
 
Client optimization drupal
Client optimization drupalClient optimization drupal
Client optimization drupalYury Glushkov
 
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...GeeksLab Odessa
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщенияRoman Brovko
 
01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложенийRoman Brovko
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheIgor Sazonov
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_rumcroitor
 

What's hot (20)

Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
 
02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты02 - Web-технологии. Web-клиенты
02 - Web-технологии. Web-клиенты
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend08 - Web-технологии. Архитектура frontend-backend
08 - Web-технологии. Архитектура frontend-backend
 
Codeception UATestingDays
Codeception UATestingDaysCodeception UATestingDays
Codeception UATestingDays
 
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]
 
15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация15 - Web-технологии. Сессии и авторизация
15 - Web-технологии. Сессии и авторизация
 
Speed
SpeedSpeed
Speed
 
Как сделать сайт быстрее?
Как сделать сайт быстрее?Как сделать сайт быстрее?
Как сделать сайт быстрее?
 
Client optimization drupal
Client optimization drupalClient optimization drupal
Client optimization drupal
 
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
WebCamp: Developer Day: Быстродействие веб-сайта. Методичный анализ и глубины...
 
17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения17 - Web-технологии. Real Time сообщения
17 - Web-технологии. Real Time сообщения
 
01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений01 - Web-технологии. Архитектура Web приложений
01 - Web-технологии. Архитектура Web приложений
 
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish CacheУскоряем Wordpress: кеширование, CDN, Varnish Cache
Ускоряем Wordpress: кеширование, CDN, Varnish Cache
 
07 virtual hosts_ru
07 virtual hosts_ru07 virtual hosts_ru
07 virtual hosts_ru
 
Drupal Do
Drupal DoDrupal Do
Drupal Do
 
HBase on Dev{Highload}
HBase on Dev{Highload}HBase on Dev{Highload}
HBase on Dev{Highload}
 

Viewers also liked

Serena Excellence Club Executive Presentation
Serena Excellence Club Executive PresentationSerena Excellence Club Executive Presentation
Serena Excellence Club Executive PresentationTrey Scarpa
 
pnut-43-02-01_1..12 JMC one edit
pnut-43-02-01_1..12 JMC one editpnut-43-02-01_1..12 JMC one edit
pnut-43-02-01_1..12 JMC one editJane Caldwell
 
Автоматическая загрузка и обработка данных для веб-порталов
Автоматическая загрузка и обработка данных для веб-порталовАвтоматическая загрузка и обработка данных для веб-порталов
Автоматическая загрузка и обработка данных для веб-порталовindex.art
 
ICF Annual Report 2015 final 14.04.16
ICF Annual Report 2015 final 14.04.16ICF Annual Report 2015 final 14.04.16
ICF Annual Report 2015 final 14.04.16John Jones
 
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your Day
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your DayWalking as Work: Bringing Activity, Mindfulness, & Creativity to Your Day
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your DaySocial Media for Nonprofits
 

Viewers also liked (7)

Serena Excellence Club Executive Presentation
Serena Excellence Club Executive PresentationSerena Excellence Club Executive Presentation
Serena Excellence Club Executive Presentation
 
pnut-43-02-01_1..12 JMC one edit
pnut-43-02-01_1..12 JMC one editpnut-43-02-01_1..12 JMC one edit
pnut-43-02-01_1..12 JMC one edit
 
Digipack draft designs
Digipack draft designsDigipack draft designs
Digipack draft designs
 
Автоматическая загрузка и обработка данных для веб-порталов
Автоматическая загрузка и обработка данных для веб-порталовАвтоматическая загрузка и обработка данных для веб-порталов
Автоматическая загрузка и обработка данных для веб-порталов
 
ICF Annual Report 2015 final 14.04.16
ICF Annual Report 2015 final 14.04.16ICF Annual Report 2015 final 14.04.16
ICF Annual Report 2015 final 14.04.16
 
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your Day
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your DayWalking as Work: Bringing Activity, Mindfulness, & Creativity to Your Day
Walking as Work: Bringing Activity, Mindfulness, & Creativity to Your Day
 
Transformative Solutions: Cities for People
Transformative Solutions: Cities for PeopleTransformative Solutions: Cities for People
Transformative Solutions: Cities for People
 

Similar to Битва за миллисекунды: практика ускорения веб сайтов

Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’aDelphiCon
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в DjangoMoscowDjango
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word pressvovasik
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Ontico
 
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизации
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизацииБыстродействие веб сайта. Методичный анализ и глубины клиентской оптимизации
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизацииYevhen Kotelnytskyi
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1rit2011
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияMedia Gorod
 
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Yandex
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersPositive Hack Days
 
скорость загрузки
скорость загрузкискорость загрузки
скорость загрузкиAlexei Smolyanov
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package managercorehard_by
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressIgor Sazonov
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-SideAleksandr Boichenko
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Andrey Taritsyn
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3Technopark
 

Similar to Битва за миллисекунды: практика ускорения веб сайтов (20)

Сборка Front-end’a
Сборка Front-end’aСборка Front-end’a
Сборка Front-end’a
 
Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
 
Как быть с большими сайтами на Word press
Как быть с большими сайтами  на Word pressКак быть с большими сайтами  на Word press
Как быть с большими сайтами на Word press
 
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
Горизонтальное масштабирование: что, зачем, когда и как /Александр Макаров (Y...
 
non-blocking java script
non-blocking java scriptnon-blocking java script
non-blocking java script
 
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизации
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизацииБыстродействие веб сайта. Методичный анализ и глубины клиентской оптимизации
Быстродействие веб сайта. Методичный анализ и глубины клиентской оптимизации
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решения
 
php frameworks
php frameworksphp frameworks
php frameworks
 
Drupal Vs Other
Drupal Vs OtherDrupal Vs Other
Drupal Vs Other
 
Assets Pipeline
Assets PipelineAssets Pipeline
Assets Pipeline
 
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
 
скорость загрузки
скорость загрузкискорость загрузки
скорость загрузки
 
Hunting for a C++ package manager
Hunting for a C++ package managerHunting for a C++ package manager
Hunting for a C++ package manager
 
Bootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPressBootstrap 3. Адаптивная верстка для WordPress
Bootstrap 3. Адаптивная верстка для WordPress
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-Side
 
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
Презентация «Bundle Transformer – инструмент для клиентской оптимизации в сре...
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
 

More from index.art

Разработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовРазработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовindex.art
 
Плюсы минусинска
Плюсы минусинскаПлюсы минусинска
Плюсы минусинскаindex.art
 
МегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейМегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейindex.art
 
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовШаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовindex.art
 
Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...index.art
 
ORM: благо или зло?
ORM: благо или зло?ORM: благо или зло?
ORM: благо или зло?index.art
 
SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012index.art
 
Как угробить SEO? Вредные советы
Как угробить SEO? Вредные советыКак угробить SEO? Вредные советы
Как угробить SEO? Вредные советыindex.art
 
Вычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеВычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеindex.art
 
E-SET Version 2.0
E-SET Version 2.0E-SET Version 2.0
E-SET Version 2.0index.art
 
E-SET open air 2013
E-SET open air 2013E-SET open air 2013
E-SET open air 2013index.art
 
СНР Процесс и результаты
СНР Процесс и результатыСНР Процесс и результаты
СНР Процесс и результатыindex.art
 

More from index.art (12)

Разработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтовРазработка, продвижение и сопровождение сайтов
Разработка, продвижение и сопровождение сайтов
 
Плюсы минусинска
Плюсы минусинскаПлюсы минусинска
Плюсы минусинска
 
МегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверейМегаКвест: доклад на дне открытых дверей
МегаКвест: доклад на дне открытых дверей
 
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетовШаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
Шаблонизация на стороне клиента. Использование для вывода настраиваемых отчетов
 
Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...Реализация складского учета методом FIFO с использованием продвинутых возможн...
Реализация складского учета методом FIFO с использованием продвинутых возможн...
 
ORM: благо или зло?
ORM: благо или зло?ORM: благо или зло?
ORM: благо или зло?
 
SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012SaaS "в облаках". День Открытых Дверей 2012
SaaS "в облаках". День Открытых Дверей 2012
 
Как угробить SEO? Вредные советы
Как угробить SEO? Вредные советыКак угробить SEO? Вредные советы
Как угробить SEO? Вредные советы
 
Вычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учетеВычислительная погрешность в бухгалтерском учете
Вычислительная погрешность в бухгалтерском учете
 
E-SET Version 2.0
E-SET Version 2.0E-SET Version 2.0
E-SET Version 2.0
 
E-SET open air 2013
E-SET open air 2013E-SET open air 2013
E-SET open air 2013
 
СНР Процесс и результаты
СНР Процесс и результатыСНР Процесс и результаты
СНР Процесс и результаты
 

Битва за миллисекунды: практика ускорения веб сайтов

  • 2.
  • 3. 75% пользователей уйдут с сайта после 10 секунд ожидания Максимально приемлемое время ожидания – не более 4 секунд Размер страниц постоянно растет… что делать?
  • 5. 1. Картинки: оптимизация и подбор формата. Полноцвет в JPG, остальное в GIF / PNG Мелкие изображения собираем в спрайты. 2. CSS и JavaScript: уменьшение кода. Прогон через оптимизаторы и обфускаторы. 3. HTML: минимизация элементов DOM, максимальная его подготовка без динамики
  • 6. 4. CSS / inline CSS: в HEADER 5. JS / inline JS: нужное – в HEADER Остальное в конец HTML или вообще после onLoad / по требованию. Используем, где только возможно асинхронную загрузку по требованию 6. Расположение элементов в HTML Экспериментируем, меряем скорость, определяем оптимальные положения
  • 7.
  • 8. Минимизация количества подгружаемого В идеале должно быть: • 1 JavaScript-файл • 1 CSS-файл • 1 HTML • остальное на картинки Не боимся использовать inline Лучше 1 большой файл чем 2 и более мелких Лучше избыточность, уходящая в кэш, чем подгрузки на каждой странице
  • 9. Автосклейка на сервере <script src=“/glue/a-a.js--b-b.js” /> <script src=“/a/a.js” /> <script src=“/b/b.js” /> ОСОБЕННОСТИ “-” == “/” “--” == разделитель файлов .js надо склеивать через “;” ПОМНИТЕ О БЕЗОПАСНОСТИ Проверяйте что и как склеивается: 1. допустимые источники 2. допустимые файлы 3. допустимый порядок
  • 10. # LAST mean LAST ;) RewriteCond %{ENV:REDIRECT_STATUS} !^$ RewriteRule .* - [L] # DEF CHARSET .js / .css AddDefaultCharset windows-1251 AddCharset windows-1251 .js AddCharset windows-1251 .css # GLUE RewriteCond %{REQUEST_URI} ^/glue/(.+)$ RewriteCond %{DOCUMENT_ROOT}/glue/%1 -f RewriteRule . /glue/%1 [L] … RewriteRule ^.*$ index.php [L] .htaccess
  • 11.
  • 12. Почти все современные браузеры поддерживают GZIP сжатие
  • 13. Если есть возможность – используем Apache mod_deflate. Однако у большинства хостеров он отключен что делать? Сделаем свой! С блэкджеком и …
  • 14. В наш обработчик склеивания добавим возможность сжатия – т.е. к файлу, который он формирует положим рядом такой же, но сжатый с добавлением “.gz” /glue/a-a.js--b-b.js /glue/a-a.js--b-b.js.gz /glue/a-a.js--b-b.js PHP, сжатие данных: $gzipped = gzencode( $content, 6 ); 6 – оптимальная степень сжатия по нагрузке / качеству PHP, сжатие output: ob_start( "ob_gzhandler" ); echo( $content ); ob_end_flush(); Помните о браузерах, не поддерживающих сжатие!!! Обязательно проверяйте, и если не поддерживается – отдавайте не сжатое. function isClientSupportGzip() { if ( headers_sent() || connection_aborted() ) return false; if ( stripos( getenv( "HTTP_ACCEPT_ENCODING" ), "gzip" ) === false ) return false; if ( stripos( getenv( "HTTP_USER_AGENT" ), "konqueror" ) !== false ) return false; return true; }
  • 15. AddEncoding gzip .gz <FilesMatch ".js.gz$"> #for proxies Header set Cache-control: private Header append Vary User-Agent ForceType "text/javascript; content=windows-1251" Header set Content-Encoding: gzip AddCharset windows-1251 .js.gz </FilesMatch> <FilesMatch ".css.gz$"> #for proxies Header set Cache-control: private Header append Vary User-Agent ForceType "text/css; content=windows-1251" Header set Content-Encoding: gzip </FilesMatch> RewriteCond %{REQUEST_URI} ^/glue/(.+)$ RewriteCond %{DOCUMENT_ROOT}/glue/%1.gz -f RewriteCond %{HTTP:Accept-Encoding} ^.*?gzip.*$ [NC] RewriteCond %{HTTP_USER_AGENT} !^konqueror [NC] RewriteRule ^siteglue/(.*)$ /glue/$1.gz [L] #for not supported GZIP RewriteCond %{REQUEST_URI} ^/glue/(.+)$ RewriteCond %{DOCUMENT_ROOT}/glue/%1 -f RewriteRule . / glue/%1 [L] .htaccess добавление
  • 16.
  • 17. 1. Всю статику отдавать через web-сервер возможно через nginx / lighthttpd 2. Обязательно включить кэширование 3. .htaccess правила для favicon из корня сайта 4. Корректная обработка 404 / 301 <ifModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 604800 seconds" </ifModule> <ifModule mod_headers.c> Header unset Cache-Control Header set Cache-Control "max-age=604800, public" </ifModule>
  • 18. 1. YUI Compressor – сжатие CSS / JS developer.yahoo.com/yui/compressor 2. Firebug – сеть, DOM и т.д. getfirebug.com 3. Google Page Speed – комплексный анализ developers.google.com/speed/pagespeed
  • 19. 1. WEBO Labs webo.in 2. Реактивные вебсайты speedupyourwebsite.ru 3. 28 способов оптимизации webzblog.com/28-sposobov-optimizacii-skorosti- zagruzki-sajta 4. JS Perfomance www.slideshare.net/souders/javascript-performance- at-sfjs 5. ktonanovenkogo.ru/vokrug-da-okolo/skorost- zagruzki/kak-uvelichit-skorost-zagruzki-sajta- optimizaciya-nagruzki-na-server.html