SlideShare ist ein Scribd-Unternehmen logo
1 von 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
Битва за миллисекунды: практика ускорения веб сайтов

Weitere ähnliche Inhalte

Was ist angesagt?

HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
Ontico
 
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
HTML GL - возьмите столько FPS, сколько вам нужно, и немного эффектов в прида...
Ontico
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Client optimization drupal
Client optimization drupalClient optimization drupal
Client optimization drupal
Yury Glushkov
 

Was ist angesagt? (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}
 

Andere mochten auch

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
Jane Caldwell
 
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
John Jones
 

Andere mochten auch (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
 

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

Работа со статикой в Django
Работа со статикой в DjangoРабота со статикой в Django
Работа со статикой в Django
MoscowDjango
 
мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1мои модули и патчи для Nginx. максим дунин. зал 1
мои модули и патчи для Nginx. максим дунин. зал 1
rit2011
 
Оптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решенияОптимизация времени загрузки сайта: проблемы и решения
Оптимизация времени загрузки сайта: проблемы и решения
Media Gorod
 
О безопасном использовании PHP wrappers
О безопасном использовании PHP wrappersО безопасном использовании PHP wrappers
О безопасном использовании PHP wrappers
Positive Hack Days
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-Side
Aleksandr Boichenko
 
HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3HighLoad весна 2014 лекция 3
HighLoad весна 2014 лекция 3
Technopark
 

Ähnlich wie Битва за миллисекунды: практика ускорения веб сайтов (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
 

Mehr von index.art

Mehr von 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