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

#php #jquery #html #affiliate

#php #jquery #HTML #Аффилиат

Вопрос:

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

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

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

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

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

 document.write('Normal HTML code')
  

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

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

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

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

Я изменил свой класс advert, чтобы возвращать рекламный код, окруженный тегами <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 и коммутируемых подключений.

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

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

2. @rdjs — Поскольку реклама является встроенной, все внешние ссылки должны быть разрешены, прежде чем можно будет отобразить следующий html. Я не возражаю, если внешний контент по-прежнему тихо загружается в фоновом режиме, пока основной контент виден.

3. Выглядит неплохо. Хотя упоминание о Netscape и коммутируемых соединениях бросило меня в холодный пот! 😉

Ответ №1:

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

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

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

1. Не уверен, кто ваш рекламный провайдер, но на этом сайте, похоже, задокументировано то, к чему я стремился с помощью Google ads semplicewebsites.com/google-ads

2. Конкретного поставщика рекламы нет, сайт представляет собой сборку WordPress, которая использует плагин Ad Manager. Клиент копирует и вставляет партнерский код с выбранных сайтов ставок, и я написал класс для извлечения партнерского кода и отображения в нужном месте. Эта идея может работать с небольшими изменениями. Я попробую это.