Ускорение внешней баннерной рекламы с асинхронной загрузкой или кэшированием

У меня красивый и элегантный веб-сайт, который загружается в два раза быстрее, пока, конечно, не будут включены рекламные баннеры! Ожидание получения добавляет до 10 секунд ко времени загрузки страницы, что меня очень расстраивает, поскольку я потратил целую вечность на оптимизацию остальной части сайта.

Я пытался загрузить рекламу через ajax или подобное с переменным успехом. Флэш-баннеры и объявления, которые просто получают фрагмент html с рекламного сервера, работают нормально. Однако есть некоторые (PaddyPower, я говорю о вас), которые возвращают javascript и используют document.write() для добавления html-объявления в DOM. Реклама никогда не показывается.

Партнерский код:

<script type="text/javascript" src="someadserver.com/impression.aspx"></script>

Скрипт, возвращенный someadserver.com

document.write('Normal HTML code')

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

Я не верю, что кэширование возможно, поскольку оно искажает статистику показов/кликов.

Кроме того, изменение любого партнерского кода не является вариантом, поскольку это веб-сайт клиента, и мне нужно стабильное и работоспособное решение, которое не зависит от взлома рекламного кода.

---РЕДАКТИРОВАТЬ---

Я изменил свой рекламный класс, чтобы он возвращал рекламный код, окруженный тегами ‹noscript›, и в то же время сохранял рекламный код в статическом члене. Сразу после моего тега ‹/body› я использую этот код здесь:

    <?php foreach(Advert::getCachedAds() as $id => $code): ?>
    <div class="advert <?php echo $id ?>" style="visibility:hidden;">
        <?php echo $code ?>
    </div>
    <?php endforeach; ?>
    <script type="text/javascript">
        $(function(){
            $('.adContainer').each(function(index, object){
                var advert = $('div.' + $(object).attr('id')).html();
                $('div.' + $(object).attr('id')).html('');
                $(object).html(advert);
            });
        });
    </script>

Это работает очень хорошо и напоминает мне старые сценарии предварительной загрузки изображений, которые мы использовали во времена Netscape и коммутируемых соединений.


person Adam Pointer    schedule 12.10.2011    source источник
comment
Для ясности, объявления вызывают задержку загрузки остального содержимого вашей страницы или вас беспокоит только общее время загрузки страницы?   -  person rdjs    schedule 12.10.2011
comment
@rdjs — поскольку реклама встроена, все внешние ссылки должны быть разрешены, прежде чем можно будет отобразить следующий HTML-код. Я не возражаю, если внешний контент все еще спокойно загружается в фоновом режиме, пока виден основной контент.   -  person Adam Pointer    schedule 12.10.2011
comment
Выглядит неплохо. Хотя упоминание о Netscape и коммутируемом соединении вызвало у меня холодный пот! ;)   -  person rdjs    schedule 13.10.2011


Ответы (1)


Вы можете поместить замещающие элементы div там, где вы хотите, чтобы ваши объявления были, загрузить рекламу после того, как весь фактический контент загрузится, а затем переместить загруженные объявления на место.

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

person rdjs    schedule 12.10.2011
comment
Не уверен, кто ваш поставщик рекламы, но этот сайт, похоже, задокументировал то, к чему я стремился с объявлениями Google semplicewebsites. .com/google-объявления - person rdjs; 12.10.2011
comment
Конкретного поставщика рекламы нет, сайт представляет собой сборку Wordpress, в которой используется плагин Менеджера рекламы. Клиент копирует и вставляет партнерский код с выбранных сайтов ставок, и я написал класс для извлечения партнерского кода и его отображения в нужном месте. Эта идея может работать с небольшой модификацией. Я это попробую. - person Adam Pointer; 12.10.2011