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

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

  • Upload
    yandex

  • View
    502

  • Download
    8

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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

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

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

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

Page 2: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

2

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

Page 3: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

3

Зачем?

Page 4: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

4

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

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

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

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

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

Page 5: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

5

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

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

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

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

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

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

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

Page 6: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

6

Инструменты

Firebug YSlow

Page Speed

Page 7: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

7

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

Page 8: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

8

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

Page 9: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

9

Page 10: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

10

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

Page 11: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

12

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

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

Page 13: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

14

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

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

Page 15: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

15

Результат

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

— Internet Explorer 6: ▼ 41%

— Internet Explorer 7: ▼ 30%

— Internet Explorer 8: ▼ 36%

Page 16: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

16

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

Page 17: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

17

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

Page 18: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

18

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

Page 19: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

19

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

Page 20: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

20

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

Было:

Стало:

Page 21: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

21

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

Было:

Стало:

Page 22: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

22

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

Было:

Стало:

Page 23: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

23

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

Было:

Стало:

Page 24: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

24

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

Было:

Стало:

Page 25: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

25

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

Было:

Стало:

Page 26: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

26

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

Было:

Стало:

Page 27: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

28

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

Page 29: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

29

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

Page 30: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

30

Было

Page 31: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

31

Стало

Safari, Chrome, Firefox, Opera:

+ transform: rotate =

Page 32: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

33

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

Page 34: Азат Разетдинов "Оптимизация времени загрузки на примере Яндекс.Карт"

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

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

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

+7 495 739-00-00

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

[email protected]

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