34
Я.Субботник, Москва, 3 июля 2010 года Руководитель группы разработки пользовательских интерфейсов Азат Разетдинов Оптимизация времени загрузки на примере Яндекс.Карт

Optimizaciya vremeni zagruzki_azat_razetdinov

Embed Size (px)

Citation preview

Page 1: Optimizaciya vremeni zagruzki_azat_razetdinov

Я.Субботник, Москва, 3 июля 2010 года

Руководитель группы разработкипользовательских интерфейсов

Азат Разетдинов

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

Page 2: Optimizaciya vremeni zagruzki_azat_razetdinov

2

Оптимизация времени загрузки

Page 3: Optimizaciya vremeni zagruzki_azat_razetdinov

3

Зачем?

Page 4: Optimizaciya vremeni zagruzki_azat_razetdinov

4

Влияние времени загрузки

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

— Bing: +2 сек — доходы ▼ 4,3%

— Google: +0,4 сек — поиск ▼ 0,6%

— Yahoo: +0,4 сек — трафик ▼ 5-9%

Page 5: Optimizaciya vremeni zagruzki_azat_razetdinov

5

Методы оптимизации

— уменьшение количества запросов;

— кэширование ресурсов;

— gzip-сжатие ресурсов;

— оптимизация изображений;

— минификация стилей и скриптов;

— много других методов.

Page 6: Optimizaciya vremeni zagruzki_azat_razetdinov

6

Инструменты

Firebug YSlow

Page Speed

Page 7: Optimizaciya vremeni zagruzki_azat_razetdinov

7

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

Page 8: Optimizaciya vremeni zagruzki_azat_razetdinov

8

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

Page 9: Optimizaciya vremeni zagruzki_azat_razetdinov

9

Page 10: Optimizaciya vremeni zagruzki_azat_razetdinov

10

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

Page 11: Optimizaciya vremeni zagruzki_azat_razetdinov

11

Было

<head>

...

<script href="_api.js"/>

<script href="_jquery.js"/>

<script href="_common.js"/>

<script href="_maps.js"/>

</head>

<body>

...

<script>Maps.init()</script>

</body>

Page 12: Optimizaciya vremeni zagruzki_azat_razetdinov

12

• Здесь может быть ваш текст

Обычный текстTemplate

Page 13: Optimizaciya vremeni zagruzki_azat_razetdinov

13

Стало

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

Page 14: Optimizaciya vremeni zagruzki_azat_razetdinov

14

• Здесь может быть ваш текст

Обычный текстTemplate

Page 15: Optimizaciya vremeni zagruzki_azat_razetdinov

15

Результат

Время до загрузки последнего тайла карты:

— Internet Explorer 6: ▼ 41%

— Internet Explorer 7: ▼ 30%

— Internet Explorer 8: ▼ 36%

Page 16: Optimizaciya vremeni zagruzki_azat_razetdinov

16

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

Page 17: Optimizaciya vremeni zagruzki_azat_razetdinov

17

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

Page 18: Optimizaciya vremeni zagruzki_azat_razetdinov

18

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

Page 19: Optimizaciya vremeni zagruzki_azat_razetdinov

19

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

Page 20: Optimizaciya vremeni zagruzki_azat_razetdinov

20

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

Было:

Стало:

Page 21: Optimizaciya vremeni zagruzki_azat_razetdinov

21

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

Было:

Стало:

Page 22: Optimizaciya vremeni zagruzki_azat_razetdinov

22

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

Было:

Стало:

Page 23: Optimizaciya vremeni zagruzki_azat_razetdinov

23

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

Было:

Стало:

Page 24: Optimizaciya vremeni zagruzki_azat_razetdinov

24

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

Было:

Стало:

Page 25: Optimizaciya vremeni zagruzki_azat_razetdinov

25

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

Было:

Стало:

Page 26: Optimizaciya vremeni zagruzki_azat_razetdinov

26

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

Было:

Стало:

Page 27: Optimizaciya vremeni zagruzki_azat_razetdinov

27

Определение загрузки скрипта

// в Опере 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;

}

Page 28: Optimizaciya vremeni zagruzki_azat_razetdinov

28

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

Page 29: Optimizaciya vremeni zagruzki_azat_razetdinov

29

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

Page 30: Optimizaciya vremeni zagruzki_azat_razetdinov

30

Было

Page 31: Optimizaciya vremeni zagruzki_azat_razetdinov

31

Стало

Safari, Chrome, Firefox, Opera:

+ transform: rotate =

Page 32: Optimizaciya vremeni zagruzki_azat_razetdinov

32

Проверка доступности 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'

Правильно:

Page 33: Optimizaciya vremeni zagruzki_azat_razetdinov

33

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

Page 34: Optimizaciya vremeni zagruzki_azat_razetdinov

Руководитель группы

119021, Россия, Москва,

ул. Льва Толстого, 16

+7 495 739-00-00

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

[email protected]

Азат Разетдинов