Отключение одиночного запроса в DFP при использовании функции refresh () для показа объявлений не работает - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть несколько объявлений в SPA.Некоторые загружаются лениво, некоторые нет.Все они обновятся при обновлении таргетинга.Из-за проблем с дублированием коррелятора для объявлений одинакового размера меня попросили отключить один запрос.Когда я удаляю googletag.pubads().enableSingleRequest(), ничего не происходит.Нет запросов на рекламу, нет ошибок, ничего.Я посмотрел, остались ли у меня методы SRA, когда я удалил этот вызов, но ничего не нашел.Я не знаю, пропускаю ли я что-то здесь, но это не работает в этом примере.

Что работает, если я обертываю refresh() в setTimeout функцию 0, которая заставляет менядумаю, что это состояние гонки.Но это нереальное решение.

Пожалуйста, не предлагайте решения по вопросу коррелятора, поскольку я знаю, что есть googletag.pubads().updateCorrelator(); Все, что я хочу, - это чтобы мои объявления делали несколько запросов без тайм-аутов.

<html>
<body>
<script src='https://www.googletagservices.com/tag/js/gpt.js'></script>
<script>
    window.googletag = window.googletag || {};
    window.googletag.cmd = window.googletag.cmd || [];
</script>

<script>

const targeting = {
    betagrp: 'testaxl',
        someTargeting: 'awesome',
};
const altTargeting = {
    betagrp: 'testaxl',
    someTargeting: 'sauce',
};

let currTargeting = targeting;

const adUnit = '/18353239/testatc/research/search/conreviews';

const adSlots = [];

function setTargeting(obj, targeting) {
    Object.entries(targeting).forEach(([key, value]) => {
        obj.setTargeting(key, value);
    });
}

function addSlot(adUnit, sizes, id, targeting) {
    const slot = window.googletag
        .defineSlot(
            adUnit,
            sizes,
            id,
        )
        .addService(googletag.pubads());
    setTargeting(slot, targeting);
    adSlots.push(slot);
}

function toggleTargeting() {
    window.googletag.cmd.push(function() {
        currTargeting = currTargeting.someTargeting === targeting.someTargeting ? altTargeting : targeting;
        window.googletag.pubads().clearTargeting();
        setTargeting(window.googletag.pubads(), currTargeting);

        window.googletag.pubads().refresh(adSlots);
    });
}

window.googletag.cmd.push(function() {
    window.googletag.pubads().clearTargeting();
    setTargeting(window.googletag.pubads(), currTargeting);
    window.googletag.pubads().disableInitialLoad();
    window.googletag.pubads().enableAsyncRendering();
    //window.googletag.pubads().enableSingleRequest();
    window.googletag.pubads().collapseEmptyDivs();
    window.googletag.enableServices();

    addSlot(
        adUnit,
        [
            [728, 93]
        ],
        'banner',
        {
            pos: 'a',
            prd: 'rc12',
        },
    );

    addSlot(
        adUnit,
        [
            'fluid',
            [728, 201],
            [728, 200]
        ],
        'ad_lstg_1',
        {
            pos: 'c',
            prd: 'rc12',
        },
    );

    addSlot(
        adUnit,
        [
            'fluid',
            [728, 200]
        ],
        'ad_lstg_2',
        {
            pos: 'd',
            prd: 'rc12',
        },
    );

    addSlot(
        adUnit,
        [
            'fluid',
            [728, 201],
            [728, 200]
        ],
        'ad_lstg_5',
        {
            pos: 'j',
            prd: 'rc12',
        },
    );

    addSlot(
        adUnit,
        [
            'fluid',
            [728, 200]
        ],
        'ad_lstg_6',
        {
            pos: 'k',
            prd: 'rc12',
        },
    );

    addSlot(
        adUnit,
        [
            'fluid',
            [728, 90],
        ],
        'footer',
        {
            pos: 'e',
            prd: 'rc12',
        },
    );

    window.googletag.pubads().refresh(adSlots);
});
</script>

<button
    onClick="toggleTargeting()"
>
    Toggle Targeting
</button>


<div id='banner'>
    <script>
    googletag.cmd.push(function() { googletag.display('banner'); });
</script>
</div>

<p />

<div id='ad_lstg_1'>
    <script>
    googletag.cmd.push(function() { googletag.display('ad_lstg_1'); });
</script>
</div>

<p />

<div id='ad_lstg_2'>
    <script>
    googletag.cmd.push(function() { googletag.display('ad_lstg_2'); });
</script>
</div>
<p />

<div id='ad_lstg_5'>
    <script>
    googletag.cmd.push(function() { googletag.display('ad_lstg_5'); });
</script>
</div>
<p />

<div id='ad_lstg_6'>
    <script>
    googletag.cmd.push(function() { googletag.display('ad_lstg_6'); });
</script>
</div>

<p />

<div id='footer'>
    <script>
    googletag.cmd.push(function() { googletag.display('footer'); });
</script>
</div>

</body>
...