-
Notifications
You must be signed in to change notification settings - Fork 1
cache Overview
GitHub Action edited this page May 21, 2026
·
1 revision
Base package defining generic caching interfaces and middlewares for the Quatrain ecosystem.
This package is meant to be extended by specific caching implementations (e.g., @quatrain/cache-redis, @quatrain/cache-memcached). It provides:
-
CacheAdapterInterface: The standard interface every Quatrain cache adapter must implement. -
AbstractCacheInvalidationMiddleware: A base class for invalidating cache namespaces following CRUD operations. -
MediaCacheProxy: A generic proxy layer over@quatrain/storageto temporarily cache binary media and provide immutable URLs.
Create a new class that implements CacheAdapterInterface:
import { CacheAdapterInterface } from '@quatrain/cache'
export class MyCustomCacheAdapter implements CacheAdapterInterface {
async get(key: string): Promise<string | null> {
// Implementation
}
async getBuffer(key: string): Promise<Buffer | null> {
// Implementation
}
async set(key: string, value: string | Buffer, ttlSeconds?: number): Promise<void> {
// Implementation
}
async del(...keys: string[]): Promise<void> {
// Implementation
}
async keys(pattern: string): Promise<string[]> {
// Implementation
}
}Combine your adapter with a storage adapter:
import { MediaCacheProxy } from '@quatrain/cache'
import { LocalStorageAdapter } from '@quatrain/storage-local'
const storage = new LocalStorageAdapter(...)
const myCache = new MyCustomCacheAdapter()
// Cache for 10 minutes (600s)
const proxy = new MediaCacheProxy(storage, myCache, 600)
const buffer = await proxy.getMedia({ ref: 'file.jpg' })