30 lines
1.1 KiB
Markdown
30 lines
1.1 KiB
Markdown
# CacheStorage
|
|
|
|
Undici exposes a W3C spec-compliant implementation of [CacheStorage](https://developer.mozilla.org/en-US/docs/Web/API/CacheStorage) and [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache).
|
|
|
|
## Opening a Cache
|
|
|
|
Undici exports a top-level CacheStorage instance. You can open a new Cache, or duplicate a Cache with an existing name, by using `CacheStorage.prototype.open`. If you open a Cache with the same name as an already-existing Cache, its list of cached Responses will be shared between both instances.
|
|
|
|
```mjs
|
|
import { caches } from 'undici'
|
|
|
|
const cache_1 = await caches.open('v1')
|
|
const cache_2 = await caches.open('v1')
|
|
|
|
// Although .open() creates a new instance,
|
|
assert(cache_1 !== cache_2)
|
|
// The same Response is matched in both.
|
|
assert.deepStrictEqual(await cache_1.match('/req'), await cache_2.match('/req'))
|
|
```
|
|
|
|
## Deleting a Cache
|
|
|
|
If a Cache is deleted, the cached Responses/Requests can still be used.
|
|
|
|
```mjs
|
|
const response = await cache_1.match('/req')
|
|
await caches.delete('v1')
|
|
|
|
await response.text() // the Response's body
|
|
```
|