workbox-expiration
Summary
- Types
Types
CacheExpiration
The CacheExpiration
class allows you define an expiration and / or limit on the number of responses stored in a Cache
.
Properties
- constructor
function
To construct a new CacheExpiration instance you must provide at least one of the
config
properties.The
constructor
function looks like:(cacheName: string, config?: CacheExpirationConfig) => {...}
- cacheName
string
Name of the cache to apply restrictions to.
- config
CacheExpirationConfig optional
- returns
- delete
function
Removes the IndexedDB object store used to keep track of cache expiration metadata.
The
delete
function looks like:() => {...}
- returns
Promise<void>
- expireEntries
function
Expires entries for the given cache and given criteria.
The
expireEntries
function looks like:() => {...}
- returns
Promise<void>
- isURLExpired
function
Can be used to check if a URL has expired or not before it's used.
This requires a look up from IndexedDB, so can be slow.
Note: This method will not remove the cached entry, call
expireEntries()
to remove indexedDB and Cache entries.The
isURLExpired
function looks like:(url: string) => {...}
- url
string
- returns
Promise<boolean>
- updateTimestamp
function
Update the timestamp for the given URL. This ensures the when removing entries based on maximum entries, most recently used is accurate or when expiring, the timestamp is up-to-date.
The
updateTimestamp
function looks like:(url: string) => {...}
- url
string
- returns
Promise<void>
ExpirationPlugin
This plugin can be used in a workbox-strategy
to regularly enforce a limit on the age and / or the number of cached requests.
It can only be used with workbox-strategy
instances that have a custom cacheName
property set. In other words, it can't be used to expire entries in strategy that uses the default runtime cache name.
Whenever a cached response is used or updated, this plugin will look at the associated cache and remove any old or extra responses.
When using maxAgeSeconds
, responses may be used once after expiring because the expiration clean up will not have occurred until after the cached response has been used. If the response has a "Date" header, then a light weight expiration check is performed and the response will not be used immediately.
When using maxEntries
, the entry least-recently requested will be removed from the cache first.
Properties
- constructor
function
The
constructor
function looks like:(config?: ExpirationPluginOptions) => {...}
- config
ExpirationPluginOptions optional
- returns
- deleteCacheAndMetadata
function
This is a helper method that performs two operations:
- Deletes all the underlying Cache instances associated with this plugin instance, by calling caches.delete() on your behalf.
- Deletes the metadata from IndexedDB used to keep track of expiration details for each Cache instance.
When using cache expiration, calling this method is preferable to calling
caches.delete()
directly, since this will ensure that the IndexedDB metadata is also cleanly removed and open IndexedDB instances are deleted.Note that if you're not using cache expiration for a given cache, calling
caches.delete()
and passing in the cache's name should be sufficient. There is no Workbox-specific method needed for cleanup in that case.The
deleteCacheAndMetadata
function looks like:() => {...}
- returns
Promise<void>
ExpirationPluginOptions
Properties
- matchOptions
CacheQueryOptions optional
- maxAgeSeconds
number optional
- maxEntries
number optional
- purgeOnQuotaError
boolean optional