Игорь Олемской — практические заметки по системному администрированию Linux CentOS

Оптимизация баннерной рекламы (перепечатка)

Комментариев нет

new-banners
Рекламной моделью сегодня пользуется большинство интернет проектов, тем более крупных. А это значит, что практически все пользуются баннерными системами.

Любая баннерная система оказывает влияние на скорость работы Вашего сайта для посетителей. При использовании стандартных механизмов открутки рекламы, которые обычно нацелены на максимальную скорость установки (но не работы!), Вы можете очень сильно снизить скорость загрузки Ваших страниц, тем самым подорвать лояльность аудитории.

Почему так происходит и что делать?


Почему баннеры делают сайт медленнее

Как обычно работают системы открутки баннерной рекламы? Зачастую это просто JavaScript код, который вставляется в нужное место на странице (туда где баннер будет). Далее по мере загрузки страницы, выполняется этот самый код, который делает запрос к баннерной системе. Далее она (баннерная система) генерирует код баннера, который и отрисовывается на страничке. Только после этого продолжается загрузка страницы.

Зачастую отрисовка баннера проходит не через одну баннерную систему, а через несколько. Это еще больше замедляет загрузку страницы, т.к. все время, пока не отрисутеся баннер, страница дальше не грузится.

Учитывая это, а также то, что баннеров на странице обычно несколько, эффект от влияния рекламы на скорость загрузки страницы может быть очень негативным.

Для оптимизации нужно сделать следующее:

  1. Выбрать быструю и стабильную баннерную систему (!)
  2. Отсрочить загрузку баннеров до окончания загрузки всей страницы
  3. Оптимизировать загрузку самих баннеров

Далее — подробнее.

Баннерные системы

В качестве системы открутки баннерной рекламы есть выбор из двух вариантов: ставить свою собственную и использовать hosted (внешнее) решение.

Ставить свою собственную систему открутки крайне не выгодно. Ни одно из современных решений не является эффективным, а проблем с производительностью будет масса. Мы когда-то использовали OpenX, которая хорошо масштабируется, но для этого ей нужны “хорошие масштабы железа”.

В качестве внешних решений, есть целый ряд предложений. Мы в качестве такого решения используем Google Ad Manager. Продукты компании Google — это хороший выбор в терминах надежности и стабильности, как и в быстродействии.


Настоятельно рекомендую выбирать внешнее (но надежное) решение. Исключение могут составлять ситуации, когда рынок проекта накладывает ограничения на такой выбор (например, слабое развитие услуг доступа к Интернет, дорогие зарубежные каналы и т.п.).

Отложенная загрузка баннерной рекламы

Это наиболее важная часть, которая позволяет достичь максимального эффекта. Смысл отложенной загрузки в том, чтобы сначала полностью отрисовать страницу, а уже потом показать баннеры.


Большинство баннерных кодов используют JS вызов document.write (). Это делает невозможным прямой запуск такого кода на событии body.onLoad ().



Тем не менее есть два варианта откладывания загрузки баннеров до полной загрузки страницы:

  1. Все баннерные коды нужно вставлять в скрытые блоки (со стилем style=”display: none”). Современные браузеры имеют встроенные механизмы оптимизации, поэтому всё, что находится в скрытых элементах не отрисовывается вообще. Далее на событие body.onload () нужно повесить вызов, который покажет все скрытые баннерные блоки. Пример с использование jQuery:
    ...
    Баннерный блок:
    <div style="display: none;" class="banner"><script>Тут баннерный код</script></div>
    ...
    <script>$(document).ready(function() { $('.banner').show(); });</script>
    ...
    
  2. Выносите баннеры в iframe. Формально это не отложит загрузку, но баннеры будут грузится параллельно с загрузкой страницы, а не последовательно. Это позволяет добиться максимального эффекта. В этом случае единственное неудобство — фиксированный размер фрейма.

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

Очень часто рекламные кампании предусматривают показ одного рекламного сообщения по несколько раз каждому посетителю. Это значит, что не следует пренебрегать клиентской оптимизацией самих баннеров (сжатие, HTPP заголовки управления кешом и .т.п) — детальнее в статье “Оптимизация клиентской части“.

Сталкивались ли Вы с проблемами производительности баннерной рекламы, и как их решали?

Google Bookmarks Digg I.ua Ru-marks Ruspace Zakladok.net Reddit delicious Technorati Yahoo My Web News2.ru БобрДобр.ru Memori.ru rucity.com
Related posts:
  1. Оптимизация картинок для Web
  2. Google analytics — отслеживание скорости загрузки страниц

Похожие записи:

  1. Google analytics — отслеживание скорости загрузки страниц
  2. Оптимизация использования памяти для Apache
  3. Оптимизация MySQL InnoDB на высоких нагрузках
  4. firefox: оптимизация внутренних баз данных sqlite
  5. Обновил php до 5.2.17-5 под CentOS 5

Комментировать