files/en-us/web/api/cachestorage/open/index.md
{{APIRef("Service Workers API")}}{{SecureContext_Header}}{{AvailableInWorkers}}
The open() method of the
{{domxref("CacheStorage")}} interface returns a {{jsxref("Promise")}} that resolves to
the {{domxref("Cache")}} object matching the cacheName.
You can access CacheStorage through the {{domxref("Window.caches")}} property in windows or through the {{domxref("WorkerGlobalScope.caches")}} property in workers.
[!NOTE] If the specified {{domxref("Cache")}} does not exist, a new cache is created with that
cacheNameand a {{jsxref("Promise")}} that resolves to this new {{domxref("Cache")}} object is returned.
open(cacheName)
cacheName
A {{jsxref("Promise")}} that resolves to the requested {{domxref("Cache")}} object.
This example is from the MDN simple service worker example (see simple service worker running live).
Here we wait for an {{domxref("InstallEvent")}} to fire, then runs
{{domxref("ExtendableEvent.waitUntil","waitUntil()")}} to handle the install process for
the app. This consists of calling CacheStorage.open() to create a new
cache, then using {{domxref("Cache.addAll()")}} to add a series of assets to it.
self.addEventListener("install", (event) => {
event.waitUntil(
caches
.open("v1")
.then((cache) =>
cache.addAll([
"/",
"/index.html",
"/style.css",
"/app.js",
"/image-list.js",
"/star-wars-logo.jpg",
"/gallery/bountyHunters.jpg",
"/gallery/myLittleVader.jpg",
"/gallery/snowTroopers.jpg",
]),
),
);
});
{{Specifications}}
{{Compat}}