Жесточайшая
Оптимизация скорости
загрузки веб-страниц
Дима Дудин @nedudi
Зачем ?
… неужели это так важно
1секунда?
1 секунда в WEB
11% - потеря количества
просмотров.
16% - потеря удовлетворенности
клиентов.
7% - потеря конверсии.
Конверсия магазинов
увеличивается на
74%
при уменьшении
времени загрузки
с 8 до 2 секунд
Деньги - не главное
Деньги - не главное
ГЛАВНОЕ, что-бы все было
четко
ГЛАВНОЕ, что-бы все было
четко
прочувствуйте боль…
прочувствуйте боль…
Как понять ?
… анализы, анализы
Pingdom
Pingdom
YSLOW
WEBPAGETEST
pagespeed
pagespeed
pagespeed
Типовые проблемы
… тяжко жить веб-разработчику
РАЗМЕР
ИЗОБРАЖЕНИЙ
авто
Сжималки
разрезалки
спрайты и тп…
grunt-svgmin
gulp-svgmin
grunt-spritesmith
gulp-sprite
grunt-webp
gulp-webp
grunticon
addyosmani.com/blog/image-optimization-tools
и еще тут
frontender.info/performance-optimization
<Picture>
vimeo.com/108326836
<picture>
<source
media="(min-width: 650px)"
srcset="images/kitten-stretching.png">
<source
media="(min-width: 465px)"
srcset="images/kitten-sitting.png">
<img
src="images/kitten-curled.png"
alt="a cute kitten">
</picture>
scottjehl.github.io/picturefill
И еще …
<img src=“hi.png"
height="100" width="100"
/>
ФОРМАТЫ
ИЗОБРАЖЕНИЙ
JPEG
PNG
SVG
Lazy
loading…
GZIP
Cachehtml5.by/blog/cache
CACHE отключен
1. Last-Modified
2. ETag
3. EXPIRES
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/pdf "access plus 1 month"
ExpiresByType text/x-javascript "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresDefault "access plus 2 days"
</IfModule>
server {
...
location ~* .(gif|ico|jpe?g|png)(?[0-9]+)?$ {
expires 1w;
}
location ~* .(css|js)$ {
expires 1d;
}
...
}
4. MAX AGE
<ifModule mod_headers.c>
<FilesMatch ".(gif|ico)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
<FilesMatch ".(js)$">
Header set Cache-Control "max-age=86400,
private, must-revalidate"
</FilesMatch>
<FilesMatch ".(php)$">
Header set Cache-Control "private, no-store, no-cache,
must-revalidate, no-transform, max-age=0"
Header set Pragma "no-cache"
</FilesMatch>
</ifModule>
server {
...
location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
add_header Cache-Control "max-age=86400, public";
}
...
}
обфускация
js сss html
Сборка
js сss
JavaScript
в конец документа
CSS
в начало документа
?
CDN
:( :)
DNS
Lookup time
feedthebot.com/tools/requests
feedthebot.com/tools/requests
WTF?
<link rel="dns-prefetch" href="//trololo.com">
Enable
Keep-AlivE
избегаем
javascript
редиректов
2013 GRUNT
2013 GRUNT
2014 GULP
2013 GRUNT
2014 GULP
…2015 GROLOLO
2013 GRUNT
2014 GULP
…2015 GROLOLO
2013 GRUNT
2014 GULP
…2015 GROLOLO
2013 GRUNT
2014 GULP
…2015 GROLOLO
2013 GRUNT
2014 GULP
…2015 GROLOLO
2013 GRUNT
2014 GULP
…2015 GROLOLO
2005-2012
2005-2012
+
2005-2012
+
2005-2012
?
+
2005-2012
?=
+
2005-2012
?=
+
2005-2012
?=
хочу
все
и
сразу
хочу
все
и
сразу
pagespeed
pagespeed
developers.google.com/speed/pagespeed/module/filters
Build from source :( Package :)
Build from source :( Package :)
Apache
ModPagespeedEnableFilters collapse_whitespace
Nginx
pagespeed EnableFilters collapse_whitespace;
Collapse Whitespace
Apache
ModPagespeedEnableFilters insert_dns_prefetch
Nginx
pagespeed EnableFilters insert_dns_prefetch;
Pre-Resolve DNS
Apache
ModPagespeedEnableFilters combine_css
Nginx
pagespeed EnableFilters combine_css;
combine css
Apache
ModPagespeedEnableFilters rewrite_css
Nginx
pagespeed EnableFilters rewrite_css;
Minify CSS
Apache
ModPagespeedEnableFilters move_css_to_head
Nginx
pagespeed EnableFilters move_css_to_head;
Move CSS to Head
Apache
ModPagespeedEnableFilters prioritize_critical_css
Nginx
pagespeed EnableFilters prioritize_critical_css;
Prioritize Critical CSS
Apache
ModPagespeedEnableFilters combine_javascript
Nginx
pagespeed EnableFilters combine_javascript;
combine js
Apache
ModPagespeedEnableFilters rewrite_javascript
Nginx
pagespeed EnableFilters rewrite_javascript;
Minify Js
Apache
ModPagespeedEnableFilters canonicalize_javascript_libraries
Nginx
pagespeed EnableFilters
canonicalize_javascript_libraries;
Canonicalize JavaScript Libraries
Apache
ModPagespeedEnableFilters
include_js_source_maps
Nginx
pagespeed EnableFilters
include_js_source_maps;
Include JavaScript Source Maps
Apache
ModPagespeedEnableFilters
move_css_above_scripts
Nginx
pagespeed EnableFilters
move_css_above_scripts;
Move CSS Above Scripts
Apache
ModPagespeedEnableFilters defer_javascript
Nginx
pagespeed EnableFilters defer_javascript;
Defer JavaScript
Apache
ModPagespeedEnableFilters dedup_inlined_images
Nginx
pagespeed EnableFilters dedup_inlined_images;
Deduplicate Inlined Images
Apache
ModPagespeedEnableFilters elide_attributes
Nginx
pagespeed EnableFilters elide_attributes;
Elide Attributes
Apache
ModPagespeedEnableFilters extend_cache
Nginx
pagespeed EnableFilters extend_cache;
Extend Cache
Apache
ModPagespeedEnableFilters flatten_css_imports
Nginx
pagespeed EnableFilters flatten_css_imports;
Flatten CSS Imports
Apache
ModPagespeedEnableFilters lazyload_images
Nginx
pagespeed EnableFilters lazyload_images;
Lazyload Images
Apache
ModPagespeedEnableFilters sprite_images
Nginx
pagespeed EnableFilters sprite_images;
Sprite Images
Apache
ModPagespeedEnableFilters rewrite_images
Nginx
pagespeed EnableFilters rewrite_images;
Optimize Images
inline_images +
inline_preview_images +
recompress_images +
convert_jpeg_to_webp +
resize_images
<img src=“data:image/png;base64,iVBORw…”>
<img src=“girl.png”>
…
Apache
ModPagespeedEnableFilters local_storage_cache
Nginx
pagespeed EnableFilters local_storage_cache;
Local Storage Cache
ЭКСПЕРИМЕНТИРУЙТЕ
ЭКСПЕРИМЕНТИРУЙТЕ
НИКОМУ НЕ ВЕРЬТЕ
НИКОМУ НЕ ВЕРЬТЕ
@nedudi @html5by
Вопросы ? nedudi@gmail.com
html5.by
vk.com/html5by
facebook.com/html5by
twitter.com/html5by

Жесточайшая оптимизация производительности веб-страниц. Google pagespeed.