Иногда это называют «эффективной частотой», и часто существует минимальное количество просмотров, прежде чем пользователь узнает или вспомнит определенный контент (часто в контексте просмотра рекламы). Вы можете использовать Shared Storage для создания отчетов об уникальных пользователях, которые просмотрели контент не менее K раз.
API общего хранилища — это предложение по созданию «песочницы конфиденциальности» для общего межсайтового хранилища, поддерживающее множество возможных вариантов использования. API частной агрегации — это доступный в общем хранилище выходной параметр, позволяющий агрегировать данные между сайтами.
Попробуйте измерение частоты K+.
Чтобы поэкспериментировать с измерением частоты K+ с использованием общего хранилища и частной агрегации, убедитесь, что вы используете Chrome M107 или более позднюю версию. Включите все API конфиденциальности рекламы в разделе chrome://settings/adPrivacy .
Также можно включить общее хранилище с помощью флага --enable-features=PrivacySandboxAdsAPIsOverride,OverridePrivacySandboxSettingsLocalTesting,SharedStorageAPI,FencedFrames в командной строке.
Поэкспериментируйте с примерами кода.
Возможно, вам потребуется измерить количество пользователей, которые просмотрели ваш контент K или более раз на разных сайтах. В этом примере количество показов добавляется в общее хранилище, где оно увеличивается на 1 при каждой загрузке контента. Когда количество показов достигает 3, вызывается API частной агрегации. В качестве ключа агрегации используется идентификатор контента, а количество показов — в качестве агрегируемого значения. В сводном отчете будет представлена информация, например: «Приблизительно 391 пользователь просмотрел рекламную кампанию с идентификатором 123 не менее 3 раз».
В этом примере:
-
k-frequency-measurement.jsзагружается с помощью фрейма и отвечает за загрузку рабочего модуля общего хранилища. -
k-frequency-measurement-worklet.js— это рабочий модуль для общего хранилища, который считывает количество показов из общего хранилища и отправляет отчет, используя API частной агрегации.
k-frequency-measurement.js
async function injectContent() {
// Load the Shared Storage worklet
await window.sharedStorage.worklet.addModule('k-freq-measurement-worklet.js');
// Run the K-frequency measurement operation
await window.sharedStorage.run('k-freq-measurement', { data: { kFreq: 3, contentId: 123 });
}
injectContent();
kuency-measurement-worklet.js
// Learn more about noise and scaling from the Private Aggregation fundamentals
// documentation on Chrome blog
const SCALE_FACTOR = 65536;
/**
* The bucket key must be a number, and in this case, it is just the content
* ID itself. For more complex bucket key construction, see other use cases in
* this demo.
*/
function convertContentIdToBucket(contentId) {
return BigInt(contentId);
}
class KFreqMeasurementOperation {
async run(data) {
const { kFreq, contentId } = data;
// Read from Shared Storage
const hasReportedContentKey = 'has-reported-content';
const impressionCountKey = 'impression-count';
const hasReportedContent = (await sharedStorage.get(hasReportedContentKey)) === 'true';
const impressionCount = parseInt((await sharedStorage.get(impressionCountKey)) || 0);
// Don't report if a report has been sent already
if (hasReportedContent) {
return;
}
// Check impression count against frequency limit
if (impressionCount < kFreq) {
await sharedStorage.set(impressionCountKey, impressionCount + 1);
return;
}
// Generate the aggregation key and the aggregatable value
const bucket = convertContentIdToBucket(contentId);
const value = 1 * SCALE_FACTOR;
// Send an aggregatable report using the Private Aggregation API
privateAggregation.contributeToHistogram({ bucket, value });
// Set the report submission status flag
await sharedStorage.set(hasReportedContentKey, 'true');
}
}
// Register the operation
register('k-freq-measurement', KFreqMeasurementOperation); \
Engage and share feedback
Note that the Shared Storage API proposal is under active discussion and development and therefore subject to change.
We're eager to hear your thoughts on the Shared Storage API.
- Proposal: Review the detailed proposal.
- Discussion: Join the ongoing discussion to ask questions and share your insights.