nakama/backend/middleware/cache.js

41 lines
958 B
JavaScript

const cache = require('../utils/redis');
// Middleware для кэширования GET запросов
const cacheMiddleware = (ttl = 300) => {
return async (req, res, next) => {
// Кэшировать только GET запросы
if (req.method !== 'GET') {
return next();
}
if (!cache.isConnected()) {
return next();
}
const key = `cache:${req.originalUrl}`;
try {
const cachedData = await cache.get(key);
if (cachedData) {
return res.json(cachedData);
}
// Перехватить res.json для сохранения в кэш
const originalJson = res.json.bind(res);
res.json = (data) => {
cache.set(key, data, ttl);
return originalJson(data);
};
next();
} catch (error) {
console.error('Cache middleware error:', error);
next();
}
};
};
module.exports = cacheMiddleware;