あなたの公開プロジェクトが印象的な聴衆を誇っているなら、あなたのユーザーは間違いなく広告システムに興味があるでしょう。ビジネスは遅かれ早かれこれに気づき、自然にいくらかの利益を引き出そうとします。
偶然にも、私はほとんどの場合、hh.ruで広告サービスのインターフェースの開発に従事していました。この記事では、画期的なテクノロジーの説明はありません。この資料は、請負業者とのやり取りを構築する方法(内部広告システムのコンテキストで)に関するものであり、カッコウに陥ることはありません。
使い方
それで、顧客はチームに来て、切望された言葉「バナー」を言います。チームリーダーは次の会議のために自分のカレンダーで時間を探し、要件が形成され始めます。
web " ", . , "" , . , url/image/description. , , , iframe.
backend- RPS, frontend web-. , WoW , . :
, ( ) , . ( ).
, , . . , . , serp_first_l L (serp - search engine result page).
, . .
banners.add(
pages=['vacancy_search_result'],
banner_ids={
BannerPlaces.SERP_FIRST_L: [1],
BannerPlaces.SERP_FIRST_M: [2],
BannerPlaces.SERP_FIRST_S: [3],
BannerPlaces.SERP_FIRST_XS: [4],
BannerPlaces.SERP_SECOND_L: [5],
BannerPlaces.SERP_SECOND_M: [6],
BannerPlaces.SERP_SECOND_S: [7],
BannerPlaces.SERP_SECOND_XS: [8],
},
)
, — , id , ( , serp_first_l). , id , .
: , global store setup, setup- .
, CSS. dom , . . , .
: ( , callback , ). , callback, AJAX- .
const visibilityWatcher = ({ element, onVisible }) => {
let visible = false;
const checkVisible = () => {
if (visible) {
return;
}
visible =
element.offsetWidth ||
element.offsetHeight ||
element.getClientRects().length;
if (visible) {
onVisible();
window.removeEventListener('resize', checkVisible);
element.dataset.listenersSetted = 'false';
}
};
if (element.dataset.listenersSetted !== 'true') {
window.addEventListener('resize', checkVisible);
element.dataset.listenersSetted = 'true';
}
checkVisible();
};
( javascript ). , : , .
, , . hh.ru iframe .
. .
Google Ad Manager
, Ad Manager — . Google , , ( , ..). DFP ( Ad Manager) , .
GPT (GPT Google Publisher Tags — javascript Ad Manager). , ad unit ( ).
Ad Manager : - 20%. DFP view hh.ru . .
CPU, Chrome?!
. , . , , . har …
, — . . Javascript CPU . , .
, observer. , . okmeter alerts, , .
, , ,
, : . . har. ( ) pop-up , .
, ( ), , adblock . , pop-up. - — , .
?
( ). . , , .
GAM (Google Ad Manager), , . , 300 . , .