Асинхронный код adsense

12
babnicks
На сайте с 23.10.2009
Offline
47
#11
koutsenko:

2) Насколько правильно конфигурировать adsense в отдельном <script>-тэге, разве такие переменные попадут в область видимости скрипта show_ads.js?

Область видимости переменных не регулируется тэгами <script>, область видимости определяется контекстом исполнения. У всех скриптов, загруженных в текущий document, область видимости едина.

По теме топика:

Код адсенса НЕЛЬЗЯ подгрузить после загрузки страницы, он у вас просто не отобразится...

1. Обращение к первичному скрипту (который show_ads.js) ВСЕГДА идет в синхронном режиме. Попробуйте инициировать его через document.createElement( 'script') и у вас перестанет показываться реклама.

2. Скрипт show_ads.js создает iframe с самим рекламным блоком, который ВСЕГДА грузится асинхронно ибо он iframe.

Вобщем не парьтесь, адсенс еще никому сайт особо не тормозил...

Мало того, влияет порядок вызова рекламных блоков. Для получения большей цены за клик необходимо чтобы блоки с максимальным CTR стояли в коде (именно в коде, а не визуально на странице) выше остальных блоков (эта информация из "первых рук", от адсенс-аналитика самого гугла), так как торги за права разместиться на вашей странице начинаются в момент первого запроса на получение рекламного блока.

100% защита от спам-ботов (https://www.keycaptcha.com)
K
На сайте с 19.01.2013
Offline
0
#12
babnicks:

2. Скрипт show_ads.js создает iframe с самим рекламным блоком, который ВСЕГДА грузится асинхронно ибо он iframe.

Вобщем не парьтесь, адсенс еще никому сайт особо не тормозил...

Думаю, многие замечают синхронность запроса к show_ads.js - визуально, на секунду браузер приостанавливает рендеринг страницы, и перестает работать скролл. Жаль, что его можно вызывать только синхронно. А если на странице 4 баннера? Стоит ли вызвать show_ads.js один раз, а далее 4 раза показать его в разных местах страницы - каждый раз в iframe по-идее асинхронно подгрузится уникальное объявление. Такой трюк правилами разрешен? Вопрос именно в сокращении количества дополнительных HTTP-запросов браузера к сайту - классический bottleneck в случае классической LAMP-архитектуры без AJAX.

babnicks:

Мало того, влияет порядок вызова рекламных блоков. Для получения большей цены за клик необходимо чтобы блоки с максимальным CTR стояли в коде (именно в коде, а не визуально на странице) выше остальных блоков (эта информация из "первых рук", от адсенс-аналитика самого гугла), так как торги за права разместиться на вашей странице начинаются в момент первого запроса на получение рекламного блока.

Интересная информация! А ссылку можно на подробности? С точки зрения гугла, я сейчас 4 раза подряд запрашиваю рекламный скрипт с одинаковыми идентификаторами, когда мой браузер парсит полученную с сайта страницу. Время первого запроса скрипта значения по идее иметь не должно - гугл ничего ведь не знает о том, когда пользователь вообще запросил саму страницу. Я должен минимизировать время между последующими запросами? И как это соотносится к размещению в начале кода - мне в идеале надо прямо в <head> 4 раза подряд, что-ли, запросить show_ads.js?

babnicks
На сайте с 23.10.2009
Offline
47
#13
koutsenko:
Стоит ли вызвать show_ads.js один раз, а далее 4 раза показать его в разных местах страницы - каждый раз в iframe по-идее асинхронно подгрузится уникальное объявление.

Что значит "вызвать show_ads.js один раз," и "далее 4 раза показать его в разных местах" это вы как скрипт собрались показывать?

Нет такого понятия "показать скрипт 4 раза" :)

koutsenko:

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

Что значит "гугл ничего не знает"?

Первый раз встретив в HTML вызов show_ads.js Ваш браузер ломится на сервер adsense, в этот момент вашему "уникальному просмотру страницы" присваивается какой-то guid, который успешно сохраняется в переменных текущего контекста документа... В этот же момент происходят "торги" за показ рекламы на вашей странице, при этом учитвается CTR того блока, от которого пришел запрос. Далее при последующих вызовах show_ads.js используются результаты уже состоявшихся торгов на основании сохраненного guid. Сделано это понятно для чего: торги довольно затратная по ресурсам вещь и для увеличения быстродействия они проводятся только 1 раз для одного показа страницы.

Не понятно правда как они поступают если типы блоков разные, но как грится за что взял, за то отдал...

koutsenko:
в идеале надо прямо в <head> 4 раза подряд, что-ли, запросить show_ads.js?

Вам просто надо разместить в HTML, блок с наибольшим CTR, перед блоками с меньшим CTR, вот и всё... head тут вообще ни при чем, да и нельзя show_ads.js нормально вызвать в head, хрень получится (почему, читайте выше) :)

ps: и еще, создайте простенький JS скрипт содержащий document.write и повызывайте его всякими разными способами, а то есть четкое ощущение того, что вы не до конца понимаете как браузеры выполняют JS...

pss: кстате 4 раза нельзя вызывать show_ads.js для одной страницы... улетите в бан... максимум 3

edka
На сайте с 17.01.2010
Offline
208
#14

Адсенс грузиться в фрейме, поэтому особо не поколдуешь :)

K
На сайте с 19.01.2013
Offline
0
#15
edka:
Адсенс грузиться в фрейме, поэтому особо не поколдуешь :)

Так я пытаюсь колдовать с вызовом адсенса, а не с его делами в фрейме. В изображениях 32Kb иллюстраций текущего положения дел. На графике (2) видно, что кэш работает, но речь о новом посетителе и полученном им первом впечатлении от сайта. А он тормозит - на графике (1) заметная задержка 0.5 сек. на получение и запуск show_ads.js (только запуск, он потом еще будет делать свои запросы к гуглу). Попытаюсь провести аналогию, сравним работу со скриптами и картинками (оба с т.з. браузера являются удаленными ресурсами, механизм их обработки браузером различается, тем не менее):

  • График (3) - последовательный запрос 7 разных картинок с одного хоста и их одновременная загрузка - работает быстро (с CSS-спрайтами мы условимся считать, что незнакомы)
  • График (1) - последовательный запрос 3 одинаковых скриптов с одного хоста и их последовательная загрузка - в сравнении очевидно, что очень неоптимально, технически возможно ли иначе?
babnicks:


ps: и еще, создайте простенький JS скрипт содержащий document.write и повызывайте его всякими разными способами, а то есть четкое ощущение того, что вы не до конца понимаете как браузеры выполняют JS...

pss: кстате 4 раза нельзя вызывать show_ads.js для одной страницы... улетите в бан... максимум 3

Знаний и вправду не хватает, чтобы понимать невозможности. Наличие ограничителя со стороны Google "1 страница = 3 скрипта" логично, чтобы не создавались сайты для накрутки с сотнями баннеров, но я и не собираюсь обходить это ограничение, мне надо "1 страница = 3 запуска одного запрошенного скрипта", все равно они потом асинхронно сделают запросы к Google и потенциальная попытка "1 страница = 100 запусков одного запрошенного скрипта" будет зарегистрирована.

gif fb1.gif
gif fb2.gif
gif fb3.gif
babnicks
На сайте с 23.10.2009
Offline
47
#16
koutsenko:

Знаний и вправду не хватает, чтобы понимать невозможности.

Вам еще раз написать что в JS нет такого понятия "ЗАПУСК СКРИПТА", в том смысле, в котором Вы хотите...

koutsenko:
Наличие ограничителя со стороны Google "1 страница = 3 скрипта" логично, чтобы не создавались сайты для накрутки с сотнями баннеров, но я и не собираюсь обходить это ограничение, мне надо "1 страница = 3 запуска одного запрошенного скрипта", все равно они потом асинхронно сделают запросы к Google и потенциальная попытка "1 страница = 100 запусков одного запрошенного скрипта" будет зарегистрирована.

Извините, но у Вас в голове КАША... Скрипт выполняется в момент его загрузки в браузер, в браузер он грузится или посредством создания элемента типа script через document.createElement (далее куда-то appendChild) или по средством html тэга <script>. Нет никакой магической команды "выполнить JS с такого-то url'a", вернее этой магической коммандой как раз и являются два вышеописанных способа... Для "сторонних" доменов третьего способа НЕТ, есть только эти ДВА...

ps: имхо это "идея фикс" насчет скорости загрузки страницы в браузер... не над тем мозг греете... не хотите чтобы "тормозило" уберите адсенс (а также аналитикс, фэйсбук, метрику) и наслаждайтесь скоростью работы сайта...

pss: для того, чтобы убрать все видимые "спецэффекты" от загрузки рекламы, тостаточно div'ы с рекламой перенести вниз HTML кода и стилями или последующим изменением parent'ов нарулить их правильное местоположение, если уж сильно хочется...

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий