Signatur
Beschreibung
Die Methode length() des Interfaces WorkletSharedStorage ermittelt, wie viele Schlüssel-Wert-Paare derzeit im gemeinsamen Speicher (Shared Storage) des aktuellen Ursprungs abgelegt sind. Sie gehört zur Shared Storage API der Privacy Sandbox, mit der Daten ursprungsübergreifend (auch in Drittanbieter-Kontexten) gespeichert, aber nur in einer abgeschotteten Umgebung gelesen werden können.
Wichtig ist der Ausführungskontext: length() gibt es nur im Worklet, also in dem Skript, das Sie mit window.sharedStorage.worklet.addModule() laden. Dort steht das globale Objekt sharedStorage (eine WorkletSharedStorage-Instanz) bereit. Im Hauptdokument hat window.sharedStorage (Typ WindowSharedStorage) nur Schreibmethoden wie set(), append(), delete() und clear(). Lesen ist dort absichtlich nicht möglich.
Typische Einsatzzwecke sind z. B. zu prüfen, ob schon Daten vorhanden sind, bevor eine Operation weiterläuft, Frequenzbegrenzungen (Frequency Capping) umzusetzen oder Einträge in einer selectURL-Operation als Entscheidungsgrundlage zu nutzen. Das Ergebnis selbst kann das Worklet nicht verlassen. Es wirkt sich nur indirekt aus: über den zurückgegebenen URL-Index bei selectURL() oder über Private-Aggregation-Berichte.
Rückgabewert
Beispiele
Anzahl der Einträge in einer run()-Operation ermitteln
// shared-storage-worklet.js – läuft im Worklet
class CountEntriesOperation {
async run(data) {
const anzahl = await sharedStorage.length();
// console.log aus Worklets erscheint in den DevTools
console.log(`Shared Storage enthält ${anzahl} Einträge`);
}
}
register('count-entries', CountEntriesOperation);
// main.js – im Hauptdokument
const zaehleEintraege = async () => {
await window.sharedStorage.set('besuch', Date.now().toString());
await window.sharedStorage.worklet.addModule('shared-storage-worklet.js');
await window.sharedStorage.run('count-entries');
};
zaehleEintraege();
URL-Auswahl abhängig vom Füllstand (selectURL)
// select-worklet.js
class SelectByLengthOperation {
async run(urls, data) {
const anzahl = await sharedStorage.length();
// Neue Nutzer (leerer Speicher) sehen Variante 0, bekannte Variante 1
return anzahl === 0 ? 0 : 1;
}
}
register('select-by-length', SelectByLengthOperation);
// main.js
const zeigeAnzeige = async () => {
await window.sharedStorage.worklet.addModule('select-worklet.js');
const config = await window.sharedStorage.selectURL(
'select-by-length',
[
{ url: 'https://werbung.example/neukunde.html' },
{ url: 'https://werbung.example/stammkunde.html' }
],
{ resolveToConfig: true }
);
document.querySelector('fencedframe').config = config;
};
zeigeAnzeige();
Speicher aufräumen, wenn zu viele Einträge vorhanden sind
// cleanup-worklet.js
const MAX_EINTRAEGE = 50;
class CleanupOperation {
async run() {
const anzahl = await sharedStorage.length();
if (anzahl > MAX_EINTRAEGE) {
await sharedStorage.clear();
console.log(`${anzahl} Einträge gelöscht`);
}
}
}
register('cleanup', CleanupOperation);
// main.js
await window.sharedStorage.worklet.addModule('cleanup-worklet.js');
await window.sharedStorage.run('cleanup', { keepAlive: false });
// Wichtig · Fallstricke
- Nur im Worklet:
window.sharedStorage.lengthgibt es im Hauptdokument nicht. Ein Aufruf dort löst einenTypeErroraus. Lesezugriffe (get(),length(),keys(),entries(),remainingBudget()) sind nur imSharedStorageWorkletmöglich. - Asynchron: Die Methode liefert ein
Promisezurück. Ohneawaiterhalten Sie keinnumber, sondern ein Promise-Objekt. - Kein Datenabfluss: Den Rückgabewert von
run()bekommt das Hauptdokument nicht zu sehen. Ergebnisse wirken sich nur überselectURL()(Fenced Frames) oder die Private Aggregation API aus. - Kompatibilität: Die Funktion ist experimentell und nur in Chromium-Browsern verfügbar. Voraussetzung sind eine Privacy-Sandbox-Registrierung (Attestation) des Ursprungs und ein sicherer Kontext (HTTPS). Firefox und Safari unterstützen die API nicht. Google hat angekündigt, mehrere Privacy-Sandbox-APIs einzustellen. Prüfen Sie deshalb den aktuellen Stand, bevor Sie die Methode produktiv einsetzen, und fragen Sie die Unterstützung vorab ab, z. B. mit
'sharedStorage' in window. - Die Zählung gilt nur für den Ursprung, der das Worklet geladen hat (bzw. für den Ursprung aus der Option
dataOrigin), und nicht für alle Ursprünge im Browser.