workbox-expiration

    Review the guide for workbox-expiration.

    Summary

    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

    • 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) => {...}

    • 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

    We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.