SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Производительность  
Client-­‐Side
Александр  Бойченко  
@banzalik
О  чем  сегодня  поговорим?
• О  HTML  и  CSS  
• Как  ускорить  ваш  сайт  
• Как  создавать  быстрые  сайты
2
Когда  пора  думать  про  скорость?
• Когда  Hi-­‐Load  
• Когда  сайт  приносит  деньги  
• Стоит  задача  подняться  в  поисковой  выдаче
3
Почему  именно  Business?
• 100  ms  задержка  =  на  1%  падение  продаж  (Amazon)  
• 400  ms  задежка  =  5-­‐9%  уменьшение  трафика  (Yahoo!)  
• 500  ms  задержка  =  20%  уменьшение  трафика  (Google)
4
Чем  мерять  скорость  загрузки?
• Dev  Tools,  вкладки  ресурсы,  сеть.  
• Google  page  speed  
• YSlow  
• http://www.webpagetest.org  
• JavaScript  (Navigation  Timing  API,  сторонние  утилиты)
5
Что  влияет  на  скорость  загрузки?
• Сервер  (Back-­‐End)  
• Сеть  (Internet)  
• Клиентский  код  (Front-­‐End)
6
Сервер
• Настройка  кеширования  
• Настройка  сжатия  
• Уменьшение  количества  перенаправлений  
• Использование  CDN  
• Уменьшать  размер  cookie  
• Уменьшение  времени  ответа  сервера
7
Настройка  кеширования
• HTML  
• CSS  
• Медиа/Картинки  
• JavaScript  
• Файлы  храним  в  виде  MD5(file.ext).ext  или  SHA256(file.ext).ext  
• Например:  608333adc72f545078ede3aad71bfe74.css
8
Настройка  кеширования
• Настроить  ETags  
• Настроить  Expires  или  Cache-­‐Control  Header  
• По  возможности  кешировать  Ajax  
• По  возможности  для  Ajax  использовать  GET  запросы
9
Настройка  сжатия
• Gzip  
• Уровень  сжатия  6-­‐8  
• Сжимать  можно  как  на  лету,  так  и  создавать  .gzip  файлы  
• Создавать  .gzip  файлы  предпочтительней  
• Сжимаем  все,  кроме  медиа  и  картинок
10
Использование  CDN
• Не  использовать  для  ресурсов  внутри  <head>...</head>  
• Не  более  4х  доменов  
• Контролировать,  чтобы  конкретный  ресурс  всегда  грузился  с  
одного  домена
11
Уменьшение  времени  ответа  сервера
• Пинать  программистов  и  админов  
• Использовать  проксирующие  сервера  такие  как  Ngnix  
• Page-­‐Speed  модули  для  веб  серверов  от  Google
12
Оптимизация  сети
• Использование  CDN  
• Скорость  не  так  важна,  как  пинг  
• Старайтесь  размещать  сервера  ближе  к  клиентам  
• Минимизируйте  количество  сетевых  запросов
13
Оптимизация  клиентского  кода
• HTML  
• CSS  
• Графика
14
Оптимизация  HTML
• CSS  и  JS  -­‐  должны  подключаться  как  внешние  файлы  
• CSS  внутри  <head>  
• JS  перед  закрытием  тега  </body>  
• Страница  должна  уметь  работать  c  отключенным  JS  
• Минимизируем  количество  <iframe>  
• Следите  за  доступностью  ресурсов,  404  не  допустимо  
• Для  таблиц  table-­‐layout:  fixed    +  width
15
Оптимизация  HTML
• Не  используйте  <img  src=""  />  с  пустым  атрибутом  src  
• Минимизируйте  количество  CSS  файлов  до  одного  
• Минимизируйте  количество  JS  файлов  до  одного  
• Минимизируйте  HTML  
• Внешний  код  (FB  like,  Google  analytics  и  др.)  дожен  быть  
асинхронным  
• Избегайте  большой  вложенности  тегов
16
Оптимизация  CSS
17
Как  работает  CSS  парсер?
#header  ul  li  a  {  color:  red  }  
!
• Справа  на  лево  
• Находим  все  ссылки  на  странице  
• Находим  все  li,  сожержащие  ссылки  
• Находим  все  ul,  сожержащие  li  c  ссылками  
• Находим  элементы  с  заданным  ID,  содержащим  ul  li  a
18
Каскад  -­‐  это  дорого
• Старайтесь  минимизировать  каскад  
• Используйте  BEM  или  его  аналоги  
• Не  используйте  селектор  *  (звездочка)  
• Селекторы  только  по  классам  
• Никаких  ID  
• Никаких  tagName  
• Никаких  [attr="something"]  
• Селектор  по  .className  очень  быстрый  почти  как  по  #id
19
Методы  оптимизации  CSS
• Не  используйте  reset.css,  normalizer.css  или  их  аналоги  
• Не  используйте  теги,  чьи  стили  требуется  сбрасывать  (ul,  p,  i  and  
etc)  
• Не  используйте  @import  
• Не  используйте  IEшные  фильтры  или  кешируйте  их  
• Некоторые  фичи  CSS3  медленные  
• Спрайты  и  data:uri  
• Вендроные  префиксы,  браузерные  хаки  (определять  браузер  на  
сервере  и  отдавать  ему  нужный  CSS)
20
Методы  оптимизации  CSS
• Избегайте  глобальных  классов  на  <body>  и  их  переключения  
• Минимизируйте  длинну  имен  классов  
• Острожно  относиться  к  кастомным  шрифтам  
• Пользуйтесь  минификаторами  CSS,  например  CSSO  
• Autoprefixer  поможет  с  вендорными  префиксами  и  с  генерацией  
стилей  для  отдельных  браузеров
21
Спрайты  или  data:uri?
• Если  не  мобильные  -­‐  то  предпочтительней  data:uri  
• CSS  файл  с  data:uri  может  быть  отдельным,  не  обязательно  
data:uri  включать  в  основной  CSS  файл
22
Оптимизация  картинок
• Чаще  всего  требуется  только  3  формата  графики:  PNG,  JPG  и  SVG
23
PNG
• Иконки  
• Полупрозрачность,  в  том  числе  и  для  PNG8  
• Мало  цветов  
• Картинки  с  текстом  
• Градиенты  
• Служебная  графика  
• Недопустима  потеря  качества
24
JPG
• Фотографии  
• Изображения  большого  размера  
• Допустима  потеря  качества
25
SVG
• Векторная  графика  
• Иконки  
• Есть  возможность  взаимодействовать  с  CSS  и  JS  
• Нет  проблем  с  масштабируемостью  и  retina  
• Иногда  «Мылится»  в  не  Retina
26
Сжатие  графики
• Photoshop  
• Svgo  -­‐  для  svg  
• JpegMini  -­‐  для  jpg  
• ScriptPNG  или  imgo  -­‐  для  png  и  jpg  
• punypng.com,  kraken.io,  jpegmini.com,  smush.it  
• Есть  еще  десятки  инструментов  на  любой  вкус
27
Favicon.ico
• Всегда  должен  лежать  в  корне  проекта  http://site.name/favicon.ico  
• Некоторые  браузеры  запрашивают  http://site.name/favicon.ico  
даже  если  он  не  обьявлен  в  HTML  
• Иконки  для  мобильных
28
И  еще  немного  про  графику
• Всегда  вставляйте  картинки  на  страницу  в  их  реальном  размере  
• Background-­‐size  -­‐  может  тормозить  
• Не  делайте  спрайты  очень  большими  (не  более  60  Kb)  
• Не  забывайте  оптимизировать  спрайты
29
Некоторые  вещи  легко  автоматизируются
• Grunt-­‐  и  Gulp-­‐таски  для  оптимизации  производительности  (http://
frontender.info/performance-­‐optimization/)
30
Спасибо!
31
Александр  Бойченко  
banzalik@gmail.com  
@banzalik

Más contenido relacionado

La actualidad más candente

Drupal Perfomance issues, tips & tricks. Антон Иванов.
Drupal Perfomance issues, tips & tricks. Антон Иванов.Drupal Perfomance issues, tips & tricks. Антон Иванов.
Drupal Perfomance issues, tips & tricks. Антон Иванов.
DrupalCampDN
 
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров РоманКеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
PVasili
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)
drupalconf
 
русоникс скорость-сайтов
русоникс скорость-сайтоврусоникс скорость-сайтов
русоникс скорость-сайтов
Andreas Schwarzkopf
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Fuenteovejuna
 

La actualidad más candente (19)

Получаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работаетПолучаем текст веб-страниц из Python и как это работает
Получаем текст веб-страниц из Python и как это работает
 
Оптимизация текстов. Модуль 17
Оптимизация текстов. Модуль 17Оптимизация текстов. Модуль 17
Оптимизация текстов. Модуль 17
 
Артур Латыпов - семантическое ядро для SEO
Артур Латыпов - семантическое ядро для SEOАртур Латыпов - семантическое ядро для SEO
Артур Латыпов - семантическое ядро для SEO
 
Drupal Perfomance issues, tips & tricks. Антон Иванов.
Drupal Perfomance issues, tips & tricks. Антон Иванов.Drupal Perfomance issues, tips & tricks. Антон Иванов.
Drupal Perfomance issues, tips & tricks. Антон Иванов.
 
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров РоманКеширование на высоконагруженном Drupal сайте. Архаров Роман
Кеширование на высоконагруженном Drupal сайте. Архаров Роман
 
Как сделать сайт с минимальным бюджетом
Как сделать сайт с минимальным бюджетомКак сделать сайт с минимальным бюджетом
Как сделать сайт с минимальным бюджетом
 
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
 
Семинар Евгения Костина "Продвижение молодого сайта в ТОП"
Семинар Евгения Костина "Продвижение молодого сайта в ТОП"Семинар Евгения Костина "Продвижение молодого сайта в ТОП"
Семинар Евгения Костина "Продвижение молодого сайта в ТОП"
 
Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2Отполифиль свой CSS - MinskCSS 2
Отполифиль свой CSS - MinskCSS 2
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
Caching on highload drupal site roman arkharov (eng)
Caching on highload drupal site  roman arkharov (eng)Caching on highload drupal site  roman arkharov (eng)
Caching on highload drupal site roman arkharov (eng)
 
русоникс скорость-сайтов
русоникс скорость-сайтоврусоникс скорость-сайтов
русоникс скорость-сайтов
 
Оптимизация контента. Mодуль14-16
Оптимизация контента. Mодуль14-16Оптимизация контента. Mодуль14-16
Оптимизация контента. Mодуль14-16
 
Как оптимизировать текст для поисковых систем
Как оптимизировать текст для поисковых системКак оптимизировать текст для поисковых систем
Как оптимизировать текст для поисковых систем
 
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
Оптимизация одного из топовых приложений для социальной сети ВКонтакте: 1000 ...
 
10 наиболее важных инструментов seo-оптимизатора (вебинар #2)
10 наиболее важных инструментов seo-оптимизатора (вебинар #2)10 наиболее важных инструментов seo-оптимизатора (вебинар #2)
10 наиболее важных инструментов seo-оптимизатора (вебинар #2)
 
Защищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атакЗащищаем WordPress-сайт от хакерских атак
Защищаем WordPress-сайт от хакерских атак
 
SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016SEO-Audit seo summit websarafan 2016
SEO-Audit seo summit websarafan 2016
 

Similar a Производительность Client-Side

Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Роман Комаров — «Механизм работы браузера»
Роман Комаров — «Механизм работы браузера»Роман Комаров — «Механизм работы браузера»
Роман Комаров — «Механизм работы браузера»
Yandex
 

Similar a Производительность Client-Side (20)

Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
 Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
Встреча "Front-end: на старт, внимание, разработка!", Сергей Пузанков
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
Управление сетками сайтов
Управление сетками сайтовУправление сетками сайтов
Управление сетками сайтов
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
 
«Правильный процесс дает правильный результат». Как грамотно выстроить работу...
«Правильный процесс дает правильный результат». Как грамотно выстроить работу...«Правильный процесс дает правильный результат». Как грамотно выстроить работу...
«Правильный процесс дает правильный результат». Как грамотно выстроить работу...
 
Антон Рева - презентация с конференции NaZapad
Антон Рева - презентация с конференции NaZapadАнтон Рева - презентация с конференции NaZapad
Антон Рева - презентация с конференции NaZapad
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
Чеклист по клиентской оптимизации / Николай Лавлинский (Метод Лаб)
 
Роман Комаров — «Механизм работы браузера»
Роман Комаров — «Механизм работы браузера»Роман Комаров — «Механизм работы браузера»
Роман Комаров — «Механизм работы браузера»
 
NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...NoBigData - потоковая система аналитики clientside производительности, Сергей...
NoBigData - потоковая система аналитики clientside производительности, Сергей...
 
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный вебHappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
HappyDev-lite-2016-весна 02 Дмитрий Пашкевич. Нетривиальный веб
 
My Open Source (Sept 2017)
My Open Source (Sept 2017)My Open Source (Sept 2017)
My Open Source (Sept 2017)
 
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
 
TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.TК°Conf. Организация разработки Frontend. Виталий Слободин.
TК°Conf. Организация разработки Frontend. Виталий Слободин.
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
MS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектураMS TFS 2010 - Обзор и архитектура
MS TFS 2010 - Обзор и архитектура
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 

Más de Aleksandr Boichenko (6)

Developer tools - подробное руководство разработчика
Developer tools - подробное руководство разработчикаDeveloper tools - подробное руководство разработчика
Developer tools - подробное руководство разработчика
 
Разработка сайтов с учетом мобильных платформ
Разработка сайтов с учетом мобильных платформРазработка сайтов с учетом мобильных платформ
Разработка сайтов с учетом мобильных платформ
 
Сборка проектов с помощью ENB
Сборка проектов с помощью ENBСборка проектов с помощью ENB
Сборка проектов с помощью ENB
 
Uawebchallenge.yandex.tank
Uawebchallenge.yandex.tankUawebchallenge.yandex.tank
Uawebchallenge.yandex.tank
 
Нагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.ТанкаНагрузочное тестирование с помощью Яндекс.Танка
Нагрузочное тестирование с помощью Яндекс.Танка
 
Приложения для соцсетей. Универсальные приложения на БЭМ
Приложения для соцсетей. Универсальные приложения на БЭМПриложения для соцсетей. Универсальные приложения на БЭМ
Приложения для соцсетей. Универсальные приложения на БЭМ
 

Производительность Client-Side

  • 2. О  чем  сегодня  поговорим? • О  HTML  и  CSS   • Как  ускорить  ваш  сайт   • Как  создавать  быстрые  сайты 2
  • 3. Когда  пора  думать  про  скорость? • Когда  Hi-­‐Load   • Когда  сайт  приносит  деньги   • Стоит  задача  подняться  в  поисковой  выдаче 3
  • 4. Почему  именно  Business? • 100  ms  задержка  =  на  1%  падение  продаж  (Amazon)   • 400  ms  задежка  =  5-­‐9%  уменьшение  трафика  (Yahoo!)   • 500  ms  задержка  =  20%  уменьшение  трафика  (Google) 4
  • 5. Чем  мерять  скорость  загрузки? • Dev  Tools,  вкладки  ресурсы,  сеть.   • Google  page  speed   • YSlow   • http://www.webpagetest.org   • JavaScript  (Navigation  Timing  API,  сторонние  утилиты) 5
  • 6. Что  влияет  на  скорость  загрузки? • Сервер  (Back-­‐End)   • Сеть  (Internet)   • Клиентский  код  (Front-­‐End) 6
  • 7. Сервер • Настройка  кеширования   • Настройка  сжатия   • Уменьшение  количества  перенаправлений   • Использование  CDN   • Уменьшать  размер  cookie   • Уменьшение  времени  ответа  сервера 7
  • 8. Настройка  кеширования • HTML   • CSS   • Медиа/Картинки   • JavaScript   • Файлы  храним  в  виде  MD5(file.ext).ext  или  SHA256(file.ext).ext   • Например:  608333adc72f545078ede3aad71bfe74.css 8
  • 9. Настройка  кеширования • Настроить  ETags   • Настроить  Expires  или  Cache-­‐Control  Header   • По  возможности  кешировать  Ajax   • По  возможности  для  Ajax  использовать  GET  запросы 9
  • 10. Настройка  сжатия • Gzip   • Уровень  сжатия  6-­‐8   • Сжимать  можно  как  на  лету,  так  и  создавать  .gzip  файлы   • Создавать  .gzip  файлы  предпочтительней   • Сжимаем  все,  кроме  медиа  и  картинок 10
  • 11. Использование  CDN • Не  использовать  для  ресурсов  внутри  <head>...</head>   • Не  более  4х  доменов   • Контролировать,  чтобы  конкретный  ресурс  всегда  грузился  с   одного  домена 11
  • 12. Уменьшение  времени  ответа  сервера • Пинать  программистов  и  админов   • Использовать  проксирующие  сервера  такие  как  Ngnix   • Page-­‐Speed  модули  для  веб  серверов  от  Google 12
  • 13. Оптимизация  сети • Использование  CDN   • Скорость  не  так  важна,  как  пинг   • Старайтесь  размещать  сервера  ближе  к  клиентам   • Минимизируйте  количество  сетевых  запросов 13
  • 14. Оптимизация  клиентского  кода • HTML   • CSS   • Графика 14
  • 15. Оптимизация  HTML • CSS  и  JS  -­‐  должны  подключаться  как  внешние  файлы   • CSS  внутри  <head>   • JS  перед  закрытием  тега  </body>   • Страница  должна  уметь  работать  c  отключенным  JS   • Минимизируем  количество  <iframe>   • Следите  за  доступностью  ресурсов,  404  не  допустимо   • Для  таблиц  table-­‐layout:  fixed    +  width 15
  • 16. Оптимизация  HTML • Не  используйте  <img  src=""  />  с  пустым  атрибутом  src   • Минимизируйте  количество  CSS  файлов  до  одного   • Минимизируйте  количество  JS  файлов  до  одного   • Минимизируйте  HTML   • Внешний  код  (FB  like,  Google  analytics  и  др.)  дожен  быть   асинхронным   • Избегайте  большой  вложенности  тегов 16
  • 18. Как  работает  CSS  парсер? #header  ul  li  a  {  color:  red  }   ! • Справа  на  лево   • Находим  все  ссылки  на  странице   • Находим  все  li,  сожержащие  ссылки   • Находим  все  ul,  сожержащие  li  c  ссылками   • Находим  элементы  с  заданным  ID,  содержащим  ul  li  a 18
  • 19. Каскад  -­‐  это  дорого • Старайтесь  минимизировать  каскад   • Используйте  BEM  или  его  аналоги   • Не  используйте  селектор  *  (звездочка)   • Селекторы  только  по  классам   • Никаких  ID   • Никаких  tagName   • Никаких  [attr="something"]   • Селектор  по  .className  очень  быстрый  почти  как  по  #id 19
  • 20. Методы  оптимизации  CSS • Не  используйте  reset.css,  normalizer.css  или  их  аналоги   • Не  используйте  теги,  чьи  стили  требуется  сбрасывать  (ul,  p,  i  and   etc)   • Не  используйте  @import   • Не  используйте  IEшные  фильтры  или  кешируйте  их   • Некоторые  фичи  CSS3  медленные   • Спрайты  и  data:uri   • Вендроные  префиксы,  браузерные  хаки  (определять  браузер  на   сервере  и  отдавать  ему  нужный  CSS) 20
  • 21. Методы  оптимизации  CSS • Избегайте  глобальных  классов  на  <body>  и  их  переключения   • Минимизируйте  длинну  имен  классов   • Острожно  относиться  к  кастомным  шрифтам   • Пользуйтесь  минификаторами  CSS,  например  CSSO   • Autoprefixer  поможет  с  вендорными  префиксами  и  с  генерацией   стилей  для  отдельных  браузеров 21
  • 22. Спрайты  или  data:uri? • Если  не  мобильные  -­‐  то  предпочтительней  data:uri   • CSS  файл  с  data:uri  может  быть  отдельным,  не  обязательно   data:uri  включать  в  основной  CSS  файл 22
  • 23. Оптимизация  картинок • Чаще  всего  требуется  только  3  формата  графики:  PNG,  JPG  и  SVG 23
  • 24. PNG • Иконки   • Полупрозрачность,  в  том  числе  и  для  PNG8   • Мало  цветов   • Картинки  с  текстом   • Градиенты   • Служебная  графика   • Недопустима  потеря  качества 24
  • 25. JPG • Фотографии   • Изображения  большого  размера   • Допустима  потеря  качества 25
  • 26. SVG • Векторная  графика   • Иконки   • Есть  возможность  взаимодействовать  с  CSS  и  JS   • Нет  проблем  с  масштабируемостью  и  retina   • Иногда  «Мылится»  в  не  Retina 26
  • 27. Сжатие  графики • Photoshop   • Svgo  -­‐  для  svg   • JpegMini  -­‐  для  jpg   • ScriptPNG  или  imgo  -­‐  для  png  и  jpg   • punypng.com,  kraken.io,  jpegmini.com,  smush.it   • Есть  еще  десятки  инструментов  на  любой  вкус 27
  • 28. Favicon.ico • Всегда  должен  лежать  в  корне  проекта  http://site.name/favicon.ico   • Некоторые  браузеры  запрашивают  http://site.name/favicon.ico   даже  если  он  не  обьявлен  в  HTML   • Иконки  для  мобильных 28
  • 29. И  еще  немного  про  графику • Всегда  вставляйте  картинки  на  страницу  в  их  реальном  размере   • Background-­‐size  -­‐  может  тормозить   • Не  делайте  спрайты  очень  большими  (не  более  60  Kb)   • Не  забывайте  оптимизировать  спрайты 29
  • 30. Некоторые  вещи  легко  автоматизируются • Grunt-­‐  и  Gulp-­‐таски  для  оптимизации  производительности  (http:// frontender.info/performance-­‐optimization/) 30