A service worker helper library that expires cached responses based on age or maximum number of entries.
npx @tessl/cli install tessl/npm-workbox-expiration@7.3.0Workbox Expiration is a service worker helper library that expires cached responses based on age or maximum number of entries. It provides two main approaches for cache expiration: programmatic cache management via the CacheExpiration class and seamless integration with Workbox strategies through the ExpirationPlugin.
npm install workbox-expirationimport { CacheExpiration, ExpirationPlugin } from "workbox-expiration";
import type { ExpirationPluginOptions } from "workbox-expiration";For CommonJS:
const { CacheExpiration, ExpirationPlugin } = require("workbox-expiration");import { ExpirationPlugin } from "workbox-expiration";
import { StaleWhileRevalidate } from "workbox-strategies";
// Using ExpirationPlugin with a Workbox strategy
const strategy = new StaleWhileRevalidate({
cacheName: "api-cache",
plugins: [
new ExpirationPlugin({
maxEntries: 50,
maxAgeSeconds: 60 * 60 * 24, // 24 hours
}),
],
});
// Direct cache expiration management
import { CacheExpiration } from "workbox-expiration";
const cacheExpiration = new CacheExpiration("my-cache", {
maxEntries: 100,
maxAgeSeconds: 60 * 60, // 1 hour
});
// Manually expire entries
await cacheExpiration.expireEntries();Workbox Expiration is built around several key components:
Direct programmatic control over cache expiration with configurable age and entry limits. Ideal for manual cache management and custom expiration workflows.
class CacheExpiration {
constructor(cacheName: string, config: CacheExpirationConfig = {});
expireEntries(): Promise<void>;
updateTimestamp(url: string): Promise<void>;
isURLExpired(url: string): Promise<boolean>;
delete(): Promise<void>;
}
interface CacheExpirationConfig {
maxEntries?: number;
maxAgeSeconds?: number;
matchOptions?: CacheQueryOptions;
}Workbox plugin for seamless integration with caching strategies, providing automatic expiration based on age and entry limits during cache operations.
class ExpirationPlugin {
constructor(config: ExpirationPluginOptions = {});
deleteCacheAndMetadata(): Promise<void>;
}
interface ExpirationPluginOptions {
maxEntries?: number;
maxAgeSeconds?: number;
matchOptions?: CacheQueryOptions;
purgeOnQuotaError?: boolean;
}