광고 로드 관리 및 새로고침
컬렉션을 사용해 정리하기
내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
시작하기 및 기본 개념 예에서 Google 게시자 태그는
(GPT) 라이브러리의 display()
메서드가 사용됨
광고 슬롯을 등록하고 표시할 수 있습니다. 하지만 광고 콘텐츠가 로드되는 시점을 더 정확하게 제어하기 위해 이러한 작업을 분리하는 것이 좋거나 필요할 수 있습니다. 예를 들어 동의 관리 플랫폼을 사용하거나 사용자 작업의 결과로 광고 콘텐츠를 요청하는 경우입니다.
이 가이드에서는
광고 콘텐츠의 로드를 제어하고 주문형으로 새 광고 콘텐츠를 가져올 수 있습니다. 전체 코드
이 예의 경우 이벤트 기반 요청에서 확인할 수 있습니다.
샘플 페이지로 이동합니다.
광고 로드 제어
기본적으로 display()
메서드의 동작은 광고 콘텐츠를 광고 슬롯에 등록, 요청, 렌더링하는 것입니다. 자동
광고 콘텐츠 요청 및 렌더링을 비활성화하려면
PubAdsService.disableInitialLoad()
메서드를 사용하여 지도 가장자리에
패딩을 추가할 수 있습니다.
초기 로드가 사용 중지된 경우 display()
호출은 광고 슬롯만 등록합니다.
두 번째 작업을 실행할 때까지 광고 콘텐츠가 로드되지 않습니다. 이렇게 하면
광고 요청이 이루어지는 시기를 정확하게 제어할 수 있습니다.
의도하지 않은 광고 요청을 방지하려면 disableInitialLoad()
를 호출해야 합니다.
display()
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Request GPT ads based on events." />
<title>Event-based ad requests</title>
<script
async
src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
crossorigin="anonymous"
></script>
<script>
window.googletag = window.googletag || { cmd: [] };
googletag.cmd.push(() => {
// Define the ad slot.
googletag
.defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
.setTargeting("test", "event")
.addService(googletag.pubads());
// Disable initial load.
// This prevents GPT from automatically fetching ads when display is called.
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
</script>
<style></style>
</head>
<body>
<div id="div-for-slot" style="width: 300px; height: 250px"></div>
<script>
googletag.cmd.push(() => {
// Register the ad slot.
// An ad will not be fetched until refresh is called.
googletag.display("div-for-slot");
});
</script>
</body>
</html>
이 예에서는 광고 요청이 발생하지 않도록 초기 로드가 중지됩니다.
display()
가 호출될 때 광고 콘텐츠가 렌더링되지 않습니다. 슬롯이 광고를 수락하고 표시할 준비가 되었지만 슬롯이 새로고침될 때까지 광고 요청이 이루어지지 않습니다.
새로고침
PubAdsService.refresh()
메서드는
새 광고 콘텐츠가 있는 슬롯을 말합니다. 이 메서드는 아직 콘텐츠를 로드하지 않은 슬롯(disableInitialLoad()
로 인해)에 사용하거나 이미 채워진 슬롯의 콘텐츠를 대체하는 데 사용할 수 있습니다. 그러나 display()
를 호출하여 등록된 슬롯만 새로고침할 수 있습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Request GPT ads based on events." />
<title>Event-based ad requests</title>
<script
async
src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"
crossorigin="anonymous"
></script>
<script>
window.googletag = window.googletag || { cmd: [] };
googletag.cmd.push(() => {
// Define the ad slot.
googletag
.defineSlot("/6355419/Travel", [728, 90], "div-for-slot")
.setTargeting("test", "event")
.addService(googletag.pubads());
// Disable initial load.
// This prevents GPT from automatically fetching ads when display is called.
googletag.pubads().disableInitialLoad();
googletag.enableServices();
});
</script>
<style></style>
</head>
<body>
<div id="div-for-slot" style="width: 300px; height: 250px"></div>
<button id="showAdButton">Show/Refresh Ad</button>
<script>
googletag.cmd.push(() => {
// Register the ad slot.
// An ad will not be fetched until refresh is called.
googletag.display("div-for-slot");
// Register click event handler.
document.getElementById("showAdButton").addEventListener("click", () => {
googletag.cmd.push(() => {
googletag.pubads().refresh();
});
});
});
</script>
</body>
</html>
이 수정된 예에서 사용자가 '광고 표시/새로고침'을 클릭하면 버튼,
refresh()
메서드가 호출됩니다. 이렇게 하면 새 광고 콘텐츠를 가져오는 요청이 트리거됩니다.
등록된 슬롯에 로드하여 기존 콘텐츠를 덮어씁니다.
위 예에서는 refresh()
메서드가 매개변수 없이 호출되므로 등록된 모든 광고 슬롯이 새로고침됩니다.
하지만 슬롯 배열을 refresh()
메서드에 전달하여 특정 광고 슬롯을 새로고침할 수도 있습니다. 예시는 광고 슬롯 새로고침 샘플을 참고하세요.
권장사항
refresh()
를 사용할 때 따라야 할 몇 가지 권장사항이 있습니다.
을 준수해야 합니다.
너무 빨리 새로고침하지 마세요.
광고 슬롯을 너무 빨리 새로고침하면 광고 요청이 제한될 수 있습니다.
이를 방지하려면 슬롯을 30초마다 한 번 이상 새로고침하지 마세요.
초 단위입니다.
불필요하게 clear()
를 호출하지 않음
광고 슬롯을 새로고침할 때는 먼저 PubAdsService.clear()
를 호출하지 마세요. 이 작업은 필요하지 않습니다.
refresh()
는 슬롯 크기와 상관없이 지정된 슬롯의 콘텐츠를
광고 콘텐츠가 이전에 로드된 적이 있는지 여부 refresh()
를 호출하기 직전에 clear()
를 호출하면 빈 슬롯이 사용자에게 표시되는 시간이 늘어날 뿐입니다.
조회 가능한 광고 슬롯만 새로고침
refresh()
를 사용하여 볼 수 없는 광고 슬롯의 콘텐츠 대체
ActiveView 비율을 크게 낮출 수 있습니다 ImpressionViewableEvent는 다음 예와 같이 광고 슬롯이 표시될 수 있게 된 시점을 확인하는 데 사용할 수 있습니다.
googletag.cmd.push(function() {
var REFRESH_KEY = 'refresh';
var REFRESH_VALUE = 'true';
googletag.defineSlot('/6355419/Travel',[728, 90], 'div-for-slot')
.setTargeting(REFRESH_KEY, REFRESH_VALUE)
.setTargeting('test', 'event')
.addService(googletag.pubads());
// Number of seconds to wait after the slot becomes viewable.
var SECONDS_TO_WAIT_AFTER_VIEWABILITY = 60;
googletag.pubads().addEventListener('impressionViewable', function(event) {
var slot = event.slot;
if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) > -1) {
setTimeout(function() {
googletag.pubads().refresh([slot]);
}, SECONDS_TO_WAIT_AFTER_VIEWABILITY * 1000);
}
});
googletag.enableServices();
});
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-05-09(UTC)
[null,null,["최종 업데이트: 2025-05-09(UTC)"],[[["\u003cp\u003eGoogle Publisher Tag (GPT) allows you to separate ad slot registration and ad content loading for more control, useful for scenarios like consent management or user-triggered ad requests.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003edisableInitialLoad()\u003c/code\u003e prevents automatic ad requests upon calling \u003ccode\u003edisplay()\u003c/code\u003e, giving you control over when to fetch ads using the \u003ccode\u003erefresh()\u003c/code\u003e method.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003erefresh()\u003c/code\u003e method fetches new ad content for registered ad slots, either initially or to replace existing content; refreshing all slots or specific ones is possible.\u003c/p\u003e\n"],["\u003cp\u003eBest practices include avoiding excessive refreshes (more frequent than every 30 seconds), refraining from unnecessary \u003ccode\u003eclear()\u003c/code\u003e calls before \u003ccode\u003erefresh()\u003c/code\u003e, and prioritizing refreshing viewable ad slots to improve ActiveView rates.\u003c/p\u003e\n"]]],["The Google Publisher Tag (GPT) allows control over ad loading using `disableInitialLoad()`, preventing automatic ad requests upon `display()`. This method only registers the slot, enabling precise control over ad requests. The `refresh()` method populates slots with new content, either in previously registered slots or as replacement for existing content. Best practices include limiting refresh frequency to at least every 30 seconds, avoiding unnecessary `clear()` calls, and only refreshing viewable slots using the `impressionViewable` event.\n"],null,["# Control ad loading and refresh\n\nIn our getting started and basic concept examples, the Google Publisher Tag\n(GPT) library's [`display()`](/publisher-tag/reference#displayadunitpath,-size,-opt_div,-opt_clickurl) method is used\nto register and display an ad slot. However, there are times when it may be\npreferable or even necessary to separate these actions, in order to more\nprecisely control when ad content is loaded. For example, when working with a\nconsent management platform or requesting ad content as the result of a user\naction.\n\nIn this guide we'll explore the mechanisms provided by GPT to\ncontrol the loading of ad content and fetch new ad content on demand. Full code\nfor this example can be found on the [event based requests](/publisher-tag/samples/event-based-requests)\nsample page.\n\nControl ad loading\n------------------\n\nBy default, the behavior of the [`display()`](/publisher-tag/reference#displayadunitpath,-size,-opt_div,-opt_clickurl) method is to\nregister, request, and render ad content into an ad slot. The automatic\nrequesting and rendering of ad content can be disabled using\n[`googletag.setConfig({ disableInitialLoad: true })`](/publisher-tag/reference#googletag.config.PageSettingsConfig.disableInitialLoad).\n\nWith initial load disabled, calls to `display()` will only register the ad slot.\nNo ad content will be loaded until a second action is taken. This lets you\nprecisely control when ad requests are made.\n\nTo avoid making unintentional ad requests,\n`googletag.setConfig({ disableInitialLoad: true })` must be called before\nenabling the service and before calling `display()`. \n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n \u003chead\u003e\n \u003cmeta charset=\"utf-8\" /\u003e\n \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /\u003e\n \u003cmeta name=\"description\" content=\"Request GPT ads based on events.\" /\u003e\n \u003ctitle\u003eEvent-based ad requests\u003c/title\u003e\n \u003cscript\n async\n src=\"https://securepubads.g.doubleclick.net/tag/js/gpt.js\"\n crossorigin=\"anonymous\"\n \u003e\u003c/script\u003e\n \u003cscript\u003e\n window.googletag = window.googletag || { cmd: [] };\n\n googletag.cmd.push(() =\u003e {\n // Define the ad slot.\n googletag\n .defineSlot(\"/6355419/Travel\", [728, 90], \"div-for-slot\")\n .addService(googletag.pubads())\n .setConfig({\n targeting: {\n test: \"event\",\n },\n });\n\n // Disable initial load to prevent GPT from automatically fetching ads when\n // display() is called.\n googletag.setConfig({\n disableInitialLoad: true,\n });\n\n // Enable services.\n googletag.enableServices();\n });\n \u003c/script\u003e\n \u003cstyle\u003e\u003c/style\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003cdiv id=\"div-for-slot\" style=\"width: 300px; height: 250px\"\u003e\u003c/div\u003e\n \u003cscript\u003e\n googletag.cmd.push(() =\u003e {\n // Register the ad slot.\n // An ad will not be fetched until refresh is called.\n googletag.display(\"div-for-slot\");\n });\n \u003c/script\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n```\n\nIn this example, initial load is disabled ensuring that no ad request is made\nand no ad content is rendered when `display()` is called. The slot is ready to\naccept and display an ad, but an ad request won't be made until the slot is\nrefreshed.\n\nRefresh\n-------\n\nThe [`PubAdsService.refresh()`](/publisher-tag/reference#googletag.PubAdsService_refresh) method is used to populate a\nslot or slots with new ad content. This method can be used on slots that have\nyet to load any content (due to\n`googletag.setConfig({ disableInitialLoad: true })`), or to replace the contents\nof an already populated slot. However, only slots which have been registered by\ncalling `display()` are eligible to be refreshed.\n**Important:** To comply with Google policy and enable your inventory to compete on Ad Exchange, you must [declare which portions of your inventory refresh](//support.google.com/admanager/answer/6286179). \n\n```html\n\u003c!DOCTYPE html\u003e\n\u003chtml\u003e\n \u003chead\u003e\n \u003cmeta charset=\"utf-8\" /\u003e\n \u003cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1\" /\u003e\n \u003cmeta name=\"description\" content=\"Request GPT ads based on events.\" /\u003e\n \u003ctitle\u003eEvent-based ad requests\u003c/title\u003e\n \u003cscript\n async\n src=\"https://securepubads.g.doubleclick.net/tag/js/gpt.js\"\n crossorigin=\"anonymous\"\n \u003e\u003c/script\u003e\n \u003cscript\u003e\n window.googletag = window.googletag || { cmd: [] };\n\n googletag.cmd.push(() =\u003e {\n // Define the ad slot.\n googletag\n .defineSlot(\"/6355419/Travel\", [728, 90], \"div-for-slot\")\n .addService(googletag.pubads())\n .setConfig({\n targeting: {\n test: \"event\",\n },\n });\n\n // Disable initial load to prevent GPT from automatically fetching ads when\n // display() is called.\n googletag.setConfig({\n disableInitialLoad: true,\n });\n\n // Enable services.\n googletag.enableServices();\n });\n \u003c/script\u003e\n \u003cstyle\u003e\u003c/style\u003e\n \u003c/head\u003e\n \u003cbody\u003e\n \u003cdiv id=\"div-for-slot\" style=\"width: 300px; height: 250px\"\u003e\u003c/div\u003e\n \u003cbutton id=\"showAdButton\"\u003eShow/Refresh Ad\u003c/button\u003e\n \u003cscript\u003e\n googletag.cmd.push(() =\u003e {\n // Register the ad slot.\n // An ad will not be fetched until refresh is called.\n googletag.display(\"div-for-slot\");\n\n // Register click event handler.\n document.getElementById(\"showAdButton\").addEventListener(\"click\", () =\u003e {\n googletag.cmd.push(() =\u003e {\n googletag.pubads().refresh();\n });\n });\n });\n \u003c/script\u003e\n \u003c/body\u003e\n\u003c/html\u003e\n```\n\nIn this modified example, when a user clicks the \"Show/Refresh Ad\" button, the\n`refresh()` method is called. This triggers a request to fetch new ad content\nand load it into the registered slot, overwriting any pre-existing content.\n\nNote that in the preceding example the `refresh()` method is called with no\nparameters, which has the effect of refreshing **all** registered ad slots.\nHowever, it's also possible to refresh specific ad slots by passing an array of\nslots to the `refresh()` method. See the [Refresh ad slots](/publisher-tag/samples/refresh)\nsample for an example of this.\n\n### Best practices\n\nWhen working with `refresh()`, there are some best practices that should be\nadhered to.\n\n1. Don't refresh too quickly.\n\n Refreshing ad slots too quickly may cause your ad requests to be throttled.\n To prevent this, avoid refreshing slots more frequently than once every 30\n seconds.\n2. Don't call `clear()` unnecessarily\n\n When refreshing an ad slot, don't call\n [`PubAdsService.clear()`](/publisher-tag/reference#googletag.PubAdsService_clear) first. This is unnecessary, since\n `refresh()` replaces the contents of the specified slot, regardless of\n whether any ad content was previously loaded. Calling `clear()` immediately\n before calling `refresh()` will only increase the amount of time a blank slot\n is visible to the user.\n3. Only refresh viewable ad slots\n\n Using `refresh()` to replace the contents of ad slots that are never viewable\n can significantly lower your ActiveView rate. The\n [ImpressionViewableEvent](/publisher-tag/reference#googletag.events.impressionviewableevent) can be used to\n determine when an ad slot has become viewable, as shown in the following\n example: \n\n googletag.cmd.push(function() {\n var REFRESH_KEY = 'refresh';\n var REFRESH_VALUE = 'true';\n\n const slot = googletag.defineSlot('/6355419/Travel',[728, 90], 'div-for-slot')\n .addService(googletag.pubads());\n slot.setConfig({\n targeting: {\n [REFRESH_KEY]: REFRESH_VALUE,\n 'test': 'event'\n }\n });\n\n // Number of seconds to wait after the slot becomes viewable.\n var SECONDS_TO_WAIT_AFTER_VIEWABILITY = 60;\n\n googletag.pubads().addEventListener('impressionViewable', function(event) {\n var slot = event.slot;\n if (slot.getTargeting(REFRESH_KEY).indexOf(REFRESH_VALUE) \u003e -1) {\n setTimeout(function() {\n googletag.pubads().refresh([slot]);\n }, SECONDS_TO_WAIT_AFTER_VIEWABILITY * 1000);\n }\n });\n\n googletag.enableServices();\n });"]]