1.0.3 • Published 3 months ago
@specter-labs/fastify-cache v1.0.3
Fastify Cache
A flexible caching plugin for Fastify that provides easy-to-use HTTP response caching.
Installation
npm install @specter-labs/fastify-cache
Usage
import fastify from 'fastify'
import fastifyCache from '@specter-labs/fastify-cache'
// Implement your own storage adapter
const redisStorageAdapter = {
async get({ key }) { /* implementation */ },
async set({ key, data, expiresIn }) { /* implementation */ },
async remove({ pattern }) { /* implementation */ }
}
const app = fastify()
// Register the plugin
app.register(fastifyCache, {
storageAdapter: redisStorageAdapter,
ttl: 300, // 5 minutes default TTL
prefix: 'my-app:cache' // custom prefix
})
// Use in routes
app.get('/data', {
config: {
cache: {
ttl: 60 // Cache this route for 60 seconds
}
}
}, async (request, reply) => {
// This response will be cached
return { data: 'cached data' }
})
// Manually interact with cache
app.get('/manual-cache', async (request, reply) => {
const cachedData = await app.cache.get('my-key')
if (cachedData) {
return cachedData
}
const data = { freshData: true }
await app.cache.set('my-key', data, 120)
return data
})
// Invalidate cache
app.post('/invalidate', async (request, reply) => {
await app.cache.invalidate('data')
return { success: true }
})
Storage
In memory
This plugin provides a in-memory storage adapter instance that can be used out-of-the-box.
import fastify from 'fastify'
import fastifyCache, { defaultStorageAdapter } from '@specter-labs/fastify-cache'
const app = fastify();
app.register(fastifyCache, {
storageAdapter: defaultStorageAdapter,
ttl: 60 * 5 // 5 minutes
})
API
Plugin Options
storageAdapter
: Required. An object implementing the IStorageAdapter interfacettl
: Optional. Default time-to-live for cached items in secondskeyGenerator
: Optional. Function to generate cache keys from requestsprefix
: Optional. Prefix for cache keys
Route Configuration
{
config: {
cache: {
ttl: 60, // TTL in seconds
keyGenerator: (req) => `custom:${req.url}` // Custom key generator
}
}
}
License
ISC