fastify-lcache plugin for Fastify for memorize data on first request and use it next time until ttl expires
npm i fastify-lcache
// your app
import fastify from 'fastify';
import lcache from 'fastify-lcache';
const app = fastify();
const address = '0.0.0.0';
const port = 4000;
app.register(lcache, {
ttlInMinutes: 10, // set cached data lifetime to 10 minutes
});
app.after(() => {
// add your routes
app.get('/ping', async (req, reply) => {
reply.send('pong');
});
});
app.listen(port, address);
// client wants data from your app
const url = 'http://0.0.0.0:4000/ping';
// first request will return origin data from route '/ping'
// and put result to the cache
axios.get(url);
// the following requests within 10 minutes
// will return cached data on this route
axios.get(url);
⚠️ IMPORTANT- Restarting your app resets the cache
{
ttlInMinutes?: 5,
disableCache?: false,
statusesToCache?: [200],
methodsToCache?: ['GET'],
excludeRoutes?: [],
}
app.lcache available inside your app
interface IStorage {
// Get cached data
get(key: string): any;
// Set data to cache
set(key: string, value: any): void;
// Check if data exists in cache
has(key: string): boolean;
// Clear all data in cache if key not specified
reset(key?: string): void;
// Clear Interval which check data lifetime
destroy(): void;
}
Fastify | lcache |
---|---|
3-4.9 | 1-1.2 |
^4.10 | 2.x |