我有一个查询MySQL数据库的Node.js服务器。它作为api端点,返回JSON以及我的Express应用程序的后端服务器,它将检索到的列表作为对象返回到视图。
我正在考虑实施flat-cache以增加响应时间。以下是代码段。
const flatCache = require('flat-cache');
var cache = flatCache.load('productsCache');
//get all products for the given customer id
router.get('/all/:customer_id', flatCacheMiddleware, function(req, res){
var customerId = req.params.customer_id;
//implemented custom handler for querying
queryHandler.queryRecordsWithParam('select * from products where idCustomers = ? order by CreatedDateTime DESC', customerId, function(err, rows){
if(err) {
res.status(500).send(err.message);
return;
}
res.status(200).send(rows);
});
});
//caching middleware
function flatCacheMiddleware(req, res, next) {
var key = '__express__' + req.originalUrl || req.url;
var cacheContent = cache.getKey(key);
if(cacheContent){
res.send(cacheContent);
} else{
res.sendResponse = res.send;
res.send = (body) => {
cache.setKey(key,body);
cache.save();
res.sendResponse(body)
}
next();
}
}
我在本地运行了node.js服务器,缓存确实大大缩短了响应时间。
然而,我面临两个问题,我需要你的帮助。
那么我在flatCacheMiddleware函数中修改了什么,它会发送给我JSON?
我手动为该客户的products表添加了一个新行,当我调用终点时,它仍向我显示旧行。那么我在什么时候清除缓存?
在Web应用程序中,理想情况下是用户注销时,但如果我将其用作api端点(甚至在webapp上,则无法保证用户将以传统方式注销),我该如何操作确定是否已添加新记录并且需要清除缓存。
感谢帮助。如果有任何其他node.js缓存相关的建议,你们都可以给出,这将是真正有用的。