WorkletSharedStorage: get() Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.

Die get() Methode der WorkletSharedStorage Schnittstelle ruft einen Wert aus dem gemeinsamen Speicher ab.

Syntax

js
get(key)

Parameter

key

Ein String, der den Schlüssel des Schlüssel-Wert-Paares repräsentiert, das Sie abrufen möchten.

Rückgabewert

Ein Promise, der entweder mit einem String aufgelöst wird, der dem Wert des abgerufenen Schlüssel-Wert-Paares entspricht, oder mit undefined, wenn der angegebene key nicht im gemeinsamen Speicher gefunden wird.

Ausnahmen

TypeError

Wird ausgelöst, wenn:

  • Das Worklet-Modul noch nicht mit addModule() hinzugefügt wurde.
  • key die vom Browser festgelegte maximale Länge überschreitet.
  • Die aufrufende Stelle die Shared Storage API nicht erfolgreich in einem Datenschutz-Sandbox-Registrierungsprozess eingeschlossen hat.

Beispiele

Messung der K+ Frequenz

Das folgende Beispiel misst die K+ Frequenz von Inhaltsansichten. Manchmal als "effektive Frequenz" beschrieben, bezieht sich die K-Frequenz auf die Mindestanzahl von Ansichten, bevor ein Nutzer bestimmte Inhalte erkennt oder sich daran erinnert (häufig im Kontext von Anzeigenansichten verwendet).

Das Skript der Hauptseite:

js
// 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();

Das Worklet-Modul wird unten gezeigt:

js
// k-frequency-measurement-worklet.js

// Scale factor for handling noise added to data
const SCALE_FACTOR = 65536;

/**
 * The bucket key must be a number, and in this case, it is simply 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 this.sharedStorage.get(hasReportedContentKey)) === "true";
    const impressionCount = parseInt(
      (await this.sharedStorage.get(impressionCountKey)) || 0,
    );

    // Do not report if a report has been sent already
    if (hasReportedContent) {
      return;
    }

    // Check impression count against frequency limit
    if (impressionCount < kFreq) {
      await this.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 via the Private Aggregation API
    privateAggregation.sendHistogramReport({ bucket, value });

    // Set the report submission status flag
    await this.sharedStorage.set(hasReportedContentKey, "true");
  }
}

// Register the operation
register("k-freq-measurement", KFreqMeasurementOperation);

Für weitere Details zu diesem Beispiel siehe K+ Frequenzmessung. Besuchen Sie die Shared Storage API Einstiegsseite für Links zu weiteren Beispielen.

Spezifikationen

Specification
Shared Storage API
# dom-workletsharedstorage-get

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch