оптимизация скорости загрузки страницы

34
VETMANAGER TEAM 12.4.12 Стр. 1 Оптимизируем загрузку страницы Романичев В.В.

Upload: vladimir-romanitchev

Post on 14-Nov-2014

699 views

Category:

Education


2 download

DESCRIPTION

Основные способы оптимизации размера и времени загрузки страницы

TRANSCRIPT

Page 1: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 1

Оптимизируемзагрузку страницы

Романичев В.В.

Page 2: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 2

План

1) Причины2) Способы3) Зачем нужна стадия компиляции4) Примеры оптимизации

Page 3: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 3

Причины

1. Все любят скорость2. Лимитирован трафик3. Ограничение по скорости4. Поисковая оптимизация

Page 4: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 4

1. Меньше запросов80 % времени - загрузка

компонентов2 потока на загрузку с

одного хоста

Page 5: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 5

CSS спрайты

.square1 { background-image: url(sprite.png); background-position: 3px 4px; width: 24px; height: 24px; }

Page 6: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 6

Inline картинкиdata:[<MIME-type>][;charset=<encoding>][;base64],<data>

Плюсы Меньше запросов Хорошо сжимаются Не нужны заголовки ответов Лучше кешируется

Page 7: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 7

КонкатенацияУ нас Some1.js Some2.js Some3.js

Нужно MegaSome.js

Page 8: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 8

2. CSS мне в HEADПомещая подключение к css файлам в хедере

страницы мы получаем постепенный рендеринг страницы

Page 9: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 9

3. JS мне в ... Помещая javascript-файлы вниз страницы мы

позволяем браузеру загрузить страницу с контентом в первую очередь, а уже потом начать загрузку javascript-файлов.

Page 10: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 10

4. Минификация1) Удаляем все не влияющие на поведение и

отображение символы.

2) Заменяем длинные выражения(none ->0)

3) Оптимизируем размер через анализ поведения.

Page 11: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 11

5. ПоддоменыОбходим ограничение хостов

Page 12: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 12

6. Кэш броузераНастроив apache мы экономим время и

трафик пользователя

Page 13: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 13

7. CDN для контентаCDN (Content Delivery Network) — это

множество веб-серверов, разнесенных географически для достижения максимальной скорости отдачи контента клиенту.

Page 14: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 14

8. Gzip - сжатие

Коэффициент сжатия приблизительно равен 5-ти но повышается нагрузка на сервер.

Page 15: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 15

9. Вынос inline скриптов

Плюсы Кешируемость Повторное использование Возможность убрать неиспользуемые

скрипты

Page 16: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 16

10. Лишний контент

Мертвый CSS, JS CSS, JS с других страниц Комментарии Постраничная навигация

Page 17: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 17

11. Размер компонентКомпоненты большого размера не

кешируются некоторыми браузерами.

Для iPhone оптимальный размер компонента до 25 килобайт.

Page 18: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 18

Компиляция

Page 19: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 19

Блочная структураПлюсы Декомпозиция и re-use Понятная архитектура Возможность легко убрать неиспользуемый

контент

Минусы Стадия компиляции

Page 20: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 20

Конфиги

Page 21: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 21

pagespages: index: doctype_html: blocks: html: blocks: head: body: blocks: page: blocks: content:

mod: «red»

Page 22: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 22

Конфиг блокаtag: 'div'attr: - 'data-i': «some» html: - agile_board.htmlimg: - bug.png - feature.pngcss: - agile_board.css - columns.cssjs: - agile_board.js

CSS/* css from agile_board.css *//* css from colums.css *//* css for sprite */

HTML<div class=b-name data-i=some> .... контент agile_board.html</div>

Sprite

bug.png Feature.png

Page 23: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 23

ИнструментыПолучение статистикиFirebug, Page Speed, Yslow, siege ...

КомпиляцияMake, GNUMake, ant, phing, rake, pake

ОперацииYUICompressor.jar, CSSO, htmlcompressor.jar, Closure Compiler, html-compressor.php, spritify.php

Page 24: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 24

Конкатенацияpake_task('html_build_pages');function run_html_build_pages(){ ... $pages = $settings['pages']; foreach ($pages as $pageName => $pageSettings) { $сontent = getContent($pageSettings, 'html'); pake_write_file($htmlPath, $сontent, true); } }

file_get_contents спасет отца русской демократии

Page 25: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 25

CSS спрайты$spritify = new spritify();... $spritify->add_image($filepath, $cssSelector);....$spritify->safe_image($imgPath);pake_write_file($cssPath

, $spritify->generate_css($imgPath));

.agile_board-img-feature { background-image: url(../img/index.png); background-position: 0px -24px; width: 24px; height: 24px; }

Page 26: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 26

Оптимизация

Page 27: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 27

Минификация HTML

function HTMLCompress($fileBig, $fileCompress) { $cmd = "php html-compressor.php -x

$fileBig >> $fileCompress"; pake_sh($cmd);}

2032 1816

11%

Page 28: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 28

Минификация CSS

function YUICompress($fileBig, $fileCompress) { $cmd = "java -jar yuicompressor.jar

$fileBig -o $fileCompress"; pake_sh($cmd);}

1785 1193

33%

Page 29: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 29

Минификация CSS

function YUICompress($fileBig, $fileCompress) { $cmd = "java -jar yuicompressor.jar

$fileBig -o $fileCompress"; pake_sh($cmd);}

1785 1193

33%

Page 30: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 30

Минификация JS

function YUICompress($fileBig, $fileCompress) { $cmd = "java -jar yuicompressor.jar

$fileBig -o $fileCompress"; pake_sh($cmd);}

148801 129457

13%

Page 31: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 31

a2enmod deflat(gzip)<ifmodule mod_deflate.c>

AddOutputFilterByType DEFLATE text/text... application/javascript

</ifmodule>

134.5 KB 49.6 KB

63%

Page 32: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 32

a2enmod expires

49.6 KB 3,5 KB

92%

<IfModule mod_expires.c> Header append Cache-Control "public" FileETag MTime Size ExpiresActive On ExpiresDefault "access plus 0 minutes" ExpiresByType text/html "access plus 1 years"</IfModule>

Page 33: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 33

Итог

Правильная методологияСтадия компиляцииНастройка сервера

-98% веса

страницы

Page 34: оптимизация скорости загрузки страницы

VETMANAGER TEAM 12.4.12 Стр. 34

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