Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Оптимизация времени загрузки
на примере Яндекс.Карт
Азат Разетдинов
Руководитель группы разработки
пользовательских интерфейсов


Я.Субботник, Москва, 3 июля 2010 года
Оптимизация времени загрузки




2
Зачем?




3
Влияние времени загрузки
— Yahoo: +0,4 сек — трафик ▼ 5-9%
— Google: +0,4 сек — поиск ▼ 0,6%
— Bing: +2 сек — доходы ▼ 4,3%




   Источник: http://stevesouders.com/docs/fronteers-20091105.pptx



   4
Методы оптимизации
— уменьшение количества запросов;
— кэширование ресурсов;
— gzip-сжатие ресурсов;
— оптимизация изображений;
— минификация стилей и скриптов;
— много других методов.


   5
Инструменты
       Firebug   YSlow




Page   Speed



6
Книги по оптимизации




7
Оптимизация Яндекс.Карт




8
9
Скрипты в конец body




10
Было
 <head>
     ...
     <script href="_api.js"/>
     <script href="_jquery.js"/>
     <script href="_common.js"/>
     <script href="_maps.js"/>
 </head>
 <body>
     ...
     <script>Maps.init()</script>
 </body>




11
Template
Обычный текст
• Здесь может быть ваш текст




12
Стало

 <head>
     ...
     <script href="_api.js"/>
 </head>
 <body>
     ...
     <script>initMap()</script>
     <script href="_jquery.js"/>
     <script href="_common.js"/>
     <script href="_maps.js"/>
     <script>Maps.init()</script>
 </body>


13
Template
Обычный текст
• Здесь может быть ваш текст




14
Результат
   Время до загрузки последнего тайла карты:
— Internet Explorer 6: ▼ 41%
— Internet Explorer 7: ▼ 30%
— Internet Explorer 8: ▼ 36%




   15
Асинхронная загрузка скриптов




16
Асинхронная загрузка скриптов




17
Было   начало рендеринга ↓




18
Стало   ↓ начало рендеринга




19
Наглядное сравнение

Было:




Стало:




20
Наглядное сравнение

Было:




Стало:




21
Наглядное сравнение

Было:




Стало:




22
Наглядное сравнение

Было:




Стало:




23
Наглядное сравнение

Было:




Стало:




24
Наглядное сравнение

Было:




Стало:




25
Наглядное сравнение

Было:




Стало:




26
Определение загрузки скрипта
 // в Опере 9.6 глючная поддержка readyState
 if (script.onreadystatechange === null) { // IE
     script.onreadystatechange = function () {
         var rs = this.readyState;
         if (rs === 'loaded' || rs === 'complete') {
             script.onreadystatechange = null;
             callback();
         }
     };
 } else {
     // readyState не гарантирует успешность загрузки
     script.onload = script.onerror = callback;
 }


27
Уменьшение количества запросов




28
Бинокль в Яндекс.Панорамах




29
Было




30
Стало


Safari, Chrome, Firefox, Opera:



              + transform: rotate =




31
Проверка доступности transform
 typeof style.WebkitTransform === 'string'
 typeof style.MozTransform === 'string'
 typeof style.OTransform === 'object' // LOL WUT?



Правильно:
 typeof   style.WebkitTransform !== 'undefined'
 typeof   style.MozTransform !== 'undefined'
 typeof   style.OTransform !== 'undefined'
 typeof   style.transform !== 'undefined'



32
Скорость загрузки — ещё одно
     конкурентное преимущество.




33
Азат Разетдинов
Руководитель группы

119021, Россия, Москва,
ул. Льва Толстого, 16

+7 495 739-00-00
+7 495 739-70-70 — факс

azat@yandex-team.ru

More Related Content

Optimizaciya vremeni zagruzki_azat_razetdinov