שימוש בנפח אחסון משותף מאפשר לכם לקבוע איזה קריאייטיב המשתמשים רואים באתרים שונים.
Shared Storage API מאפשר פרטיות הצעת Sandbox למטרה כללית, אחסון באתרים שונים, שתומך בהרבה ותרחישים לדוגמה אפשריים. אחת הדוגמאות לכך היא סבב קריאייטיב, שזמין לבדיקה ב-Chrome מגרסה 104.0.5086.0 ואילך.
סבב קריאייטיב מאפשר לך לאחסן נתונים כמו מזהה קריאייטיב, תצוגות מפורטות ספירות ואינטראקציות של משתמשים, כדי לקבוע אילו קריאייטיבים לראות בכל אתרים שונים.
מריצים worklet של Shared Storage כדי לבחור כתובת URL מרשימה נתונה, על סמך נתונים מאוחסנים, ולאחר מכן לעבד את הקריאייטיב הזה במסגרת מגודרת. אפשר להשתמש בערך הזה כדי לבחור מודעות חדשות או תכנים אחרים.
כדאי לנסות את סבב הקריאייטיב
כדי להתנסות בסבב נכסי קריאייטיב עם נפח אחסון משותף, צריך לוודא שמשתמשים ב-Chrome מגרסה 104.0.5086.0 ואילך. הפעלת כל ממשקי ה-API לשמירה על פרטיות בפרסום במסגרת chrome://settings/adPrivacy
.
אפשר להפעיל אחסון משותף גם באמצעות הדגל --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames
בשורת הפקודה.
התנסות עם דוגמאות קוד
ייתכן שמפרסם או מפיק תוכן ירצו ליישם אסטרטגיות שונות את הקמפיין ולבצע סבב בין התוכן או הקריאייטיבים כדי לשפר את היעילות. ניתן להשתמש באחסון משותף כדי להפעיל אסטרטגיות רוטציה שונות, כמו סבב רציף וסבבי בחלוקה שווה, בין אתרים שונים.
בדוגמה הזו:
- התוסף
creative-rotation.js
מוטמע במסגרת. הסקריפט קובע אילו מודעות הן החשובות ביותר ( משקל) וקורא לרכיב ה-worklet כדי לקבוע איזה תוכן יוצג. creative-rotation-worklet.js
הוא סביבת האחסון המשותפת שקובעת את ההתפלגות המשוקללת של התוכן וההחזרות שצריך להציג.
// 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);
תרחישים לדוגמה
אלה רק חלק מהתרחישים לדוגמה האפשריים של אחסון משותף. נמשיך להוסיף דוגמאות כשתקבל משוב ונגלה תרחישים חדשים לדוגמה.
בחירת תוכן
אפשר לבחור ולהציג תוכן שונה באתרים שונים במסגרות מגודרות על סמך המידע שנאסף באחסון המשותף. שער הפלט עבור תרחישים לדוגמה האלה הוא בחירת כתובות URL.
- סבב קריאייטיב: אחסון של נתונים כמו מזהה קריאייטיב, ספירת צפיות ואינטראקציה של משתמשים כדי לקבוע אילו פריטי קריאייטיב יראו באתרים שונים.
- A/B Testing: אפשר להקצות משתמש לקבוצת ניסוי, ואז לאחסן את הקבוצה באחסון משותף ולאפשר גישה אליה באתרים שונים.
- חוויות משתמש בהתאמה אישית: שיתוף תוכן וקריאות לפעולה בהתאמה אישית על סמך סטטוס ההרשמה של המשתמש או מצבי משתמש אחרים
הפקת דוחות סיכום
איסוף מידע באמצעות 'נפח אחסון משותף' והפקת דוח סיכום מצטבר ורועש. שער הפלט לתרחישים לדוגמה האלה הוא Private Aggregation API.
- מדידת היקף החשיפה למשתמשים ייחודיים: יוצרים ומפרסמים רבים של תוכן רוצים לדעת כמה אנשים ייחודיים ראו את התוכן שלהם. אפשר להשתמש באחסון משותף כדי לתעד את הפעם הראשונה שבה משתמש ראה את המודעה, את הסרטון המוטמע או את אתר החדשות שלכם, ולמנוע ספירה כפולה של אותו משתמש באתרים שונים. לאחר מכן אפשר להשתמש ב-Private Aggregation API כדי להפיק דוח סיכום לגבי היקף החשיפה.
- מדידת הדמוגרפיה: לעיתים קרובות יצרני תוכן רוצים להבין את הדמוגרפיה של הקהל שלהם. אפשר להשתמש באחסון משותף כדי לתעד נתונים דמוגרפיים של משתמשים בהקשר שבו הם נמצאים, למשל באתר של צד ראשון, ולהשתמש בדיווח מצטבר כדי לדווח על הנתונים האלה באתרים רבים אחרים, כמו תוכן מוטמע.
- מדידת התדירות ב-K+: לעיתים קרובות יש מספר מינימלי של צפיות לפני שהוא יזהה תוכן מסוים או יזכור אותו (לרוב בהקשר של צפיות במודעה). אפשר להשתמש בנפח אחסון משותף כדי ליצור דוחות של משתמשים ייחודיים שראו קטע תוכן לפחות K פעמים.
מעורבות ושיתוף משוב
ההצעה לנפח אחסון משותף נמצאת בדיון פעיל וכפופה לשינויים הוא בעתיד. אם ניסיתם את ה-API הזה ויש לכם משוב, נשמח לשמוע אותו.
- GitHub: קראו את הצעה, לעיון בסקירה המפורטת, העלאת שאלות והשתתפות בדיון.
- הודעות על Shared Storage API: הצטרפות להודעות קודמות או הצגה שלהן ברשימת התפוצה שלנו
- תמיכה למפתחים: אפשר לשאול שאלות ולהצטרף לדיונים מאגר התמיכה למפתחים של ארגז החול לפרטיות