Signatur
Beschreibung
Die Methode delete() der Schnittstelle CacheStorage sucht den Cache mit dem Namen cacheName. Findet sie ihn, wird er samt allen gespeicherten Anfrage-/Antwort-Paaren entfernt und das zurückgegebene Promise wird zu true aufgelöst. Gibt es keinen Cache mit diesem Namen, wird das Promise zu false aufgelöst – es wird also kein Fehler geworfen.
Zugriff erhält man über das globale caches-Objekt (window.caches bzw. self.caches im Service Worker). Der typische Einsatzort ist das activate-Ereignis eines Service Workers: Dort werden veraltete Cache-Versionen (z. B. static-v1, nachdem static-v2 installiert wurde) aufgeräumt, damit der Speicher nicht unbegrenzt wächst.
Man kann delete() auch direkt im Fenster-Kontext aufrufen, etwa für eine Schaltfläche „Offline-Daten löschen“ oder beim Abmelden eines Nutzers, damit keine persönlichen Antworten im Cache zurückbleiben.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $cacheName Pflicht | string | Name des zu löschenden Caches – exakt so, wie er bei caches.open() vergeben wurde (Groß-/Kleinschreibung wird beachtet). |
Rückgabewert
true aufgelöst, wenn der Cache gefunden und gelöscht wurde, sonst zu false.Beispiele
Einzelnen Cache löschen
const geloescht = await caches.delete('bilder-v1');
console.log(geloescht ? 'Cache entfernt' : 'Cache existierte nicht');
Alte Cache-Versionen im Service Worker aufräumen
// sw.js
const AKTUELLE_CACHES = ['static-v3', 'api-v2'];
self.addEventListener('activate', (event) => {
event.waitUntil((async () => {
const namen = await caches.keys();
await Promise.all(
namen
.filter((name) => !AKTUELLE_CACHES.includes(name))
.map((name) => {
console.log('Lösche veralteten Cache:', name);
return caches.delete(name);
})
);
await self.clients.claim();
})());
});
Alle Offline-Daten beim Abmelden entfernen
const alleCachesLoeschen = async () => {
if (!('caches' in window)) return 0;
const namen = await caches.keys();
const ergebnisse = await Promise.all(namen.map((n) => caches.delete(n)));
return ergebnisse.filter(Boolean).length;
};
document.querySelector('#logout').addEventListener('click', async () => {
const anzahl = await alleCachesLoeschen();
console.log(`${anzahl} Cache(s) gelöscht`);
});
// Wichtig · Fallstricke
- Kein Fehler bei unbekanntem Namen: Existiert der Cache nicht, lautet das Ergebnis
false. Tippfehler im Namen fallen daher leicht nicht auf – Rückgabewert prüfen. - Nicht verwechseln mit
Cache.prototype.delete(request), das nur einen einzelnen Eintrag innerhalb eines Caches entfernt. - Sicherer Kontext:
cachesist nur über HTTPS (oderlocalhost) verfügbar; in manchen privaten Modi (ältere Firefox-Versionen) wirft der Zugriff einenSecurityError. Vorher mit'caches' in selfprüfen. - Service Worker: Aufräumarbeiten in
activateimmer inevent.waitUntil()kapseln, sonst kann der Worker beendet werden, bevor das Löschen abgeschlossen ist. - Der
CacheStorageist pro Origin geteilt – ein Löschen wirkt sich auf alle Tabs und den Service Worker derselben Origin aus. Offene Referenzen auf ein gelöschtesCache-Objekt bleiben zwar nutzbar, der Cache ist aber nicht mehr übercaches.open()erreichbar.