Korzystanie z pamięci współdzielonej pozwala określić, jaką kreację widzi użytkownik w różnych witrynach.
Shared Storage API to oferta pakietowa Piaskownicy prywatności do ogólnego przeznaczenia do przechowywania w różnych witrynach, która obsługuje wiele możliwych przypadków użycia. Przykładem może być rotacja kreacji, którą można przetestować w Chrome 104.0.5086.0 i nowszych.
Dzięki rotacji kreacji możesz przechowywać dane takie jak identyfikator kreacji, liczba wyświetleń i interakcje użytkowników, by określić, które kreacje użytkownicy zobaczą w różnych witrynach.
Uruchom Worklet współdzielonej pamięci masowej, aby na podstawie przechowywanych danych wybrać adres URL z podanej listy, a następnie wyrenderować tę kreację w zabezpieczonej ramce. Można ich użyć, aby wybrać nowe reklamy lub inne treści.
Wypróbuj rotację kreacji
Aby poeksperymentować z rotacją kreacji za pomocą pamięci współdzielonej, upewnij się, że używasz Chrome w wersji 104.0.5086.0 lub nowszej. Włącz wszystkie interfejsy Ad Privacy API w sekcji chrome://settings/adPrivacy
.
Możesz też włączyć pamięć współdzieloną, używając flagi --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
w wierszu poleceń.
Eksperyment z przykładowym kodem
Reklamodawca lub producent treści może stosować do kampanii różne strategie i zmieniać zawartość lub kreacje, by zwiększyć skuteczność. Pamięć współdzielona może służyć do uruchamiania różnych strategii rotacji, np. rotacji sekwencyjnej i rozłożonej równomiernie w różnych witrynach.
W tym przykładzie:
- Element
creative-rotation.js
jest osadzony w ramce. Skrypt ten określa, które reklamy są najważniejsze ( waga), i wywołania do Workletu w celu określenia treści do wyświetlenia. creative-rotation-worklet.js
to Worklet pamięci współdzielonej określający ważony rozkład treści i zwrotów, które powinny być wyświetlane.
// Ad config with the URL of the content, a probability weight for rotation, and the clickthrough rate.
const DEMO_CONTENT_CONFIG = [
{
url: 'https://your-server.example/contents/content-1.html',
weight: 0.7,
},
{
url: 'https://your-server.example/contents/content-2.html',
weight: 0.2,
},
{
url: 'https://your-server.example/contents/content-3.html',
weight: 0.1,
},
];
// Set the mode to sequential and set the starting index to 0.
async function seedStorage() {
await window.sharedStorage.set('content-rotation-mode', 'sequential', {
ignoreIfPresent: true,
});
await window.sharedStorage.set('content-rotation-index', 0, {
ignoreIfPresent: true,
});
}
async function injectAd() {
// Load the worklet module
await window.sharedStorage.worklet.addModule('content-rotation-worklet.js');
// Initially set the storage to sequential mode for the demo
seedStorage();
// Run the URL selection operation to determine the next content rendered.
const urls = DEMO_CONTENT_CONFIG.map(({ url }) => ({ url }));
const fencedFrameConfig = await window.sharedStorage.selectURL('content-rotation', urls, {
data: DEMO_CONTENT_CONFIG,
resolveToConfig: true
});
// Render the opaque URL into a fenced frame
document.getElementById('content-slot').config = fencedFrameConfig;
}
injectAd();
class SelectURLOperation {
async run(urls, data) {
// Read the rotation mode from Shared Storage
const rotationMode = await this.sharedStorage.get('content-rotation-mode');
// Generate a random number to be used for rotation
const randomNumber = Math.random();
let index;
switch (rotationMode) {
/**
* Sequential rotation
* - Rotates the contents in order
* - Example: A -> B -> C -> A ...
*/
case 'sequential':
const currentIndex = await this.sharedStorage.get('creative-rotation-index');
index = parseInt(currentIndex, 10);
const nextIndex = (index + 1) % urls.length;
await this.sharedStorage.set('content-rotation-index', nextIndex);
break;
/**
* Weighted rotation
* - Rotates the contentswith weighted probability
* - Example: A=70% / B=20% / C=10%
*/
case 'weighted-distribution':
// Sum the weights cumulatively, and find the first URL where the
// sum exceeds the random number. The array is sorted in
// descending order first.
let weightSum = 0;
const { url } = data
.sort((a, b) => b.weight - a.weight)
.find(({ weight }) => {
weightSum += weight;
return weightSum > randomNumber;
});
index = urls.indexOf(url);
break;
default:
index = 0;
}
return index;
}
}
register('content-rotation', SelectURLOperation);
Przypadki użycia
To tylko niektóre z możliwych zastosowań pamięci współdzielonej. W miarę otrzymywania opinii i odkrywania nowych przypadków użycia będziemy dodawać kolejne przykłady.
Wybór treści
Wybieraj i wyświetlaj różne treści na różnych stronach w ogrodzonych ramkach na podstawie informacji zebranych w pamięci współdzielonej. Bramką wyjściową dla tych przypadków użycia jest wybór adresu URL.
- Rotacja kreacji: przechowuj dane, np. identyfikator kreacji, liczbę wyświetleń i interakcje użytkowników, aby określać, które kreacje widzą użytkownicy w różnych witrynach.
- Testy A/B: możesz przypisać użytkownika do grupy eksperymentalnej, a potem zapisać tę grupę w pamięci współdzielonej, aby mieć do niej dostęp w różnych witrynach.
- Niestandardowe wrażenia użytkowników: udostępniaj niestandardowe treści i wezwania do działania wybrane na podstawie stanu rejestracji użytkownika lub innych stanów użytkownika.
Generowanie raportów podsumowujących
Gromadzenie informacji w pamięci współdzielonej i generowanie szczegółowego raportu podsumowującego. Bramką wyjściową dla tych przypadków użycia jest Private Aggregation API.
- Pomiar zasięgu wśród unikalnych użytkowników: wielu producentów treści i reklamodawców chce wiedzieć, ilu unikalnych użytkowników zobaczyło ich treści. Korzystaj z pamięci współdzielonej, by rejestrować, kiedy użytkownik po raz pierwszy zobaczył Twoją reklamę, umieszczony film lub publikację, i zapobiec zduplikowaniu tego samego użytkownika w różnych witrynach. Następnie możesz użyć interfejsu Private Aggregation API, aby wygenerować raport podsumowujący dla Twojego zasięgu.
- Pomiar danych demograficznych: twórcy treści często chcą poznać dane demograficzne swoich odbiorców. Możesz wykorzystać pamięć współdzieloną, aby rejestrować dane demograficzne użytkowników w kontekście, w jakim są dostępne (np. w Twojej własnej witrynie), a potem generować raporty na ich temat obejmujące wiele innych witryn, na przykład treści umieszczone na innej stronie.
- Pomiar częstotliwości K+: czasami określany jako „efektywna częstotliwość” występuje często minimalna liczba wyświetleń, zanim użytkownik rozpozna lub zapamięta określone treści (często w kontekście wyświetleń reklamy). Możesz wykorzystać pamięć współdzieloną, aby tworzyć raporty o unikalnych użytkownikach, którzy widzieli treść co najmniej tyle razy.
Angażuj odbiorców i dziel się opiniami
Propozycja wspólnego miejsca na dane jest w trakcie dyskusji i może ulec zmianie w przyszłości. Jeśli wypróbujesz ten interfejs API i chcesz przekazać nam swoją opinię, chętnie poznamy jego opinię.
- GitHub: przeczytaj propozycji, dokumentu dotyczącego zasięgu, przesyłania pytań i udziału w dyskusjach.
- Ogłoszenia dotyczące interfejsu Shared Storage API: dołącz do naszej listy adresowej lub dołącz do wcześniejszych ogłoszeń.
- Pomoc dla deweloperów: zadawaj pytania i dołączaj do dyskusji na Repozytorium pomocy dla deweloperów Piaskownicy prywatności.