Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. Web-APIs
  3. SharedStorageOperation

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

SharedStorageOperation

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe dieKompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

DasSharedStorageOperation Interface derShared Storage API repräsentiert die Basisklasse für alle Output-Gate-Operationstypen.

Die Output-Gate-Typen sind unten aufgeführt:

NameBeschreibungDefiniert vonAufgerufen von
URL-AuswahlWird verwendet, um eine URL anzuwählen, die dem Benutzer basierend auf Shared-Storage-Daten angezeigt wird.[`SharedStorageSelectURLOperation`](/de/docs/Web/API/SharedStorageSelectURLOperation)[`selectURL()`](/de/docs/Web/API/WindowSharedStorage/selectURL)
AusführenEine generische Möglichkeit, einige Shared-Storage-Daten zu verarbeiten. Wird zum Beispiel von derPrivate Aggregation API verwendet, um Shared-Storage-Daten zu verarbeiten und aggregierte Berichte zu erstellen.[`SharedStorageRunOperation`](/de/docs/Web/API/SharedStorageRunOperation)[`run()`](/de/docs/Web/API/WindowSharedStorage/run)

Beispiele

Definition einzelner Operationen

VieleShared Storage Worklet-Modulskripts definieren und registrieren nur eine einzige Operation; Beispiele finden Sie auf den SeitenSharedStorageSelectURLOperation undSharedStorageRunOperation.

Definition mehrerer Operationen

In fortgeschritteneren Fällen ist es möglich, mehrere Operationen im gleichenShared Storage Worklet-Modulskript mit unterschiedlichen Namen zu definieren und zu registrieren. Im folgenden Worklet-Modulskript definieren wir eine URL-Auswahloperation namensSelectURLOperation, die eine URL für A/B-Tests auswählt, und eine Ausführungsoperation namensExperimentGroupReportingOperation, die einen Histogrammbericht basierend auf der A/B-Testgruppe des Benutzers erstellt:

js
// ab-testing-worklet.jsclass SelectURLOperation {  async run(urls, data) {    // Read the user's group from shared storage    const experimentGroup = await sharedStorage.get("ab-testing-group");    // Log to console for the demo    console.log(`urls = ${JSON.stringify(urls)}`);    console.log(`data = ${JSON.stringify(data)}`);    console.log(`ab-testing-group in shared storage is ${experimentGroup}`);    // Return the index of the group    return data.indexOf(experimentGroup);  }}function getBucketForTestingGroup(testingGroup) {  switch (testingGroup) {    case "control":      return 0;    case "experiment-a":      return 1;    case "experiment-b":      return 2;  }}class ExperimentGroupReportingOperation {  async run() {    const experimentGroup = await sharedStorage.get("ab-testing-group");    const bucket = BigInt(getBucketForTestingGroup(experimentGroup));    privateAggregation.contributeToHistogram({ bucket, value: 1 });  }}// Register the operationsregister("ab-testing", SelectURLOperation);register("experiment-group-reporting", ExperimentGroupReportingOperation);

Im Hauptbrowserkontext werden diese Operationen durchselectURL() undrun() aufgerufen. Die über diese Methoden auszuführenden Operationen werden anhand der Namen ausgewählt, mit denen sie registriert wurden, und müssen auch den Strukturen entsprechen, die von den KlassenSharedStorageSelectURLOperation undSharedStorageRunOperation und ihrenrun()-Methoden definiert wurden.

js
// For demo purposes. The hostname is used to determine the usage of// development localhost URL vs production URLconst contentProducerUrl = window.location.host;// Map the experiment groups to the URLsconst EXPERIMENT_MAP = [  {    group: "control",    url: `https://${contentProducerUrl}/ads/default-ad.html`,  },  {    group: "experiment-a",    url: `https://${contentProducerUrl}/ads/experiment-ad-a.html`,  },  {    group: "experiment-b",    url: `https://${contentProducerUrl}/ads/experiment-ad-b.html`,  },];// Choose a random group for the initial experimentfunction getRandomExperiment() {  const randomIndex = Math.floor(Math.random() * EXPERIMENT_MAP.length);  return EXPERIMENT_MAP[randomIndex].group;}async function injectAd() {  // Load the worklet module  await window.sharedStorage.worklet.addModule("ab-testing-worklet.js");  // Set the initial value in the storage to a random experiment group  window.sharedStorage.set("ab-testing-group", getRandomExperiment(), {    ignoreIfPresent: true,  });  const urls = EXPERIMENT_MAP.map(({ url }) => ({ url }));  const groups = EXPERIMENT_MAP.map(({ group }) => group);  // Resolve the selectURL call to a fenced frame config only when it exists on the page  const resolveToConfig = typeof window.FencedFrameConfig !== "undefined";  // Run the URL selection operation to select an ad based on the experiment group in shared storage  const selectedUrl = await window.sharedStorage.selectURL("ab-testing", urls, {    data: groups,    resolveToConfig,    keepAlive: true,  });  const adSlot = document.getElementById("ad-slot");  if (resolveToConfig && selectedUrl instanceof FencedFrameConfig) {    adSlot.config = selectedUrl;  } else {    adSlot.src = selectedUrl;  }  // Run the reporting operation  await window.sharedStorage.run("experiment-group-reporting");}injectAd();

Spezifikationen

This feature does not appear to be defined in any specification.

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2026 Movatter.jp