22
Разгони свой сайт Лекция 7: «Ненавязчивый» JavaScript Мациевский Николай 1 / 22 webo.in

Разгони свой сайт

Embed Size (px)

DESCRIPTION

Разгони свой сайт. Лекция 7: «Ненавязчивый» JavaScript. Мациевский Николай. 1 / 2 2. webo.in. Содержание. «Отложенная» загрузка «Ненавязчивый» JavaScript «Ненавязчивая» реклама «Ненавязчивые» счетчики. 2 / 2 2. webo.in. «Отложенная» загрузка. 3 / 2 2. webo.in. - PowerPoint PPT Presentation

Citation preview

Page 1: Разгони свой сайт

Разгони свой сайтЛекция 7: «Ненавязчивый» JavaScript

Мациевский Николай

1 / 22webo.in

Page 2: Разгони свой сайт

Содержание

• «Отложенная» загрузка

• «Ненавязчивый» JavaScript

• «Ненавязчивая» реклама

• «Ненавязчивые» счетчики

2 / 22webo.in

Page 3: Разгони свой сайт

«Отложенная» загрузка

webo.in 3 / 22

Page 4: Разгони свой сайт

Событие DOMContentLoaded

• Срабатывает по готовности DOM– По окончанию второй стадии загрузки

• У пользователя сформированная страница– Загрузка страницы для него завершилась

• Загружаем дополнительные файлы– Например, JavaScript

4 / 22webo.in

Page 5: Разгони свой сайт

Кроссбраузерный подход

5 / 22webo.in

• IE: атрибут defer + onreadystatechange

• Дополнительный «мнимый» скрипт

• Safari: document.readyState

• Проверяем с заданным интервалом

• «Старые» браузеры: window.onload

• Для обратной совместимости

Page 6: Разгони свой сайт

Неблокирующая загрузка

6 / 22webo.in

• JavaScript-вызовы блокируют загрузку– Не дают применять параллельные потоки

• Динамическая загрузка скриптов– DOM-методы по onload – лучше всего– defer / document.write – только в IE– XHR + eval – выполняется долго– XHR + script.innerText – еще сложнее– Iframe – дополнительная нагрузка

Page 7: Разгони свой сайт

«Ненавязчивый» JavaScript

webo.in 7 / 22

Page 8: Разгони свой сайт

Обратная совместимость

9 / 22webo.in

• Ссылки ведут на соответствующие страницы

• Даже если с onclick

• Анимация работает на CSS

• Везде, где это возможно

• Страница функционирует без JavaScript

• JavaScript – только дополняет!

Page 9: Разгони свой сайт

Очищаем код

8 / 22webo.in

• Семантический HTML

• Разметка соответствует смыслу

• HTML отделен от CSS

• Содержание от представления

• HTML отделен от JavaScript

• Содержание от взаимодействия

Page 10: Разгони свой сайт

Доступ к DOM-дереву

10 / 22webo.in

• Доверять, но проверять

• Элемента или метода может не быть

• DOM-методы

• getElementById

• getElementsByTagName

• getElementsByClassName (не везде)

Page 11: Разгони свой сайт

Обработчики событий

11 / 22webo.in

• Для одного элемента

• .onclick , .onload и т.д.

• или attachEvent / addEventListener

• Для группы

• родитель отвечает за обработку

• источник определяем по e.target

Page 12: Разгони свой сайт

«Ненавязчивая» реклама

webo.in 12 / 22

Page 13: Разгони свой сайт

Внешняя реклама на сайте

• Блокирует отрисовку страницы

• iframe спасает, но не всегда возможен

• Скорость загрузки зависит от скорости доступа к внешним ресурсам

• Логика отображения рассчитывается через браузер

13 / 22webo.in

Page 14: Разгони свой сайт

Добавление элементов

14 / 22webo.in

• document.write• Блокируют загрузку• Нужно вставлять максимально близко к

концу страницы

• innerHTML• Требует подготовленного контейнера• Можно использовать на любой стадии

загрузки

Page 15: Разгони свой сайт

Виды размещения

15 / 22webo.in

• Контекстная реклама• Можно загружать в «отложенном» режиме

• TopLine / RichMedia / банеры• Можно вставлять в подготовленные блоки

на странице

• PopUnder• Раздражает больше всего

Page 16: Разгони свой сайт

Архитектура рекламной сети

16 / 22webo.in

• Вся логика вычисляется на сервере• Пользователь получает

готовый файл / текст

• Вся реклама вызывается на третьей или четвертой стадии• Через отложенную загрузку

• Статистика считается через логи

• Коллизии при кэшировании?

Page 17: Разгони свой сайт

«Ненавязчивые» счетчики

webo.in 17 / 22

Page 18: Разгони свой сайт

Общая структура

• .gif файл вызывается с сервера статистики

• Все параметры передаются в GET-запросе

• Внешняя библиотека загружается для дополнительной бизнес-логики

18 / 22webo.in

Page 19: Разгони свой сайт

Вставка .gif файла

• document.write– Блокируем отображение страницы– Устаревшая технология

• new Image().src– Поддерживается всеми браузерами– Не блокирует загрузку страницы

19 / 22webo.in

Page 20: Разгони свой сайт

«Отложенные» счетчики

• Находим document.write

• Анализируем параметры у .gif

• Преобразуем вызов в new Image()

• Используем в любом месте– Вставляем в сам HTML-файл– Вставляем в JavaScript-библиотеку– Вызываем при каком-то условии– И т.д.

20 / 22webo.in

Page 21: Разгони свой сайт

Динамическая статистика

• Библиотека на своем сервере– Полный контроль (максимальное сжатие)– Нет обращений к внешнему хосту– Нет контроля изменений

• «Отложенный» вызов– Динамическое добавление библиотеки– Проверяем по timeout, загрузился ли файл– Вызываем функцию счетчика

21 / 22webo.in

Page 22: Разгони свой сайт

В следующей лекцииБыстрый JavaScript

• Замыкания и утечки памяти

• «Тяжелые» JavaScript-вычисления

• Быстрый DOM

• Кэширование в JavaScript

• Элементарные операции

22 / 22webo.in