NodeJS重新整理API缓存最佳实践

lulu88

我对NodeJS非常陌生,并且正在使用Restify构建我的第一个API。我想找出缓存响应数据的最佳实践-每个API调用都必须具有自己的缓存时间。

我看过res.cache(),但这似乎仅是针对每个用户请求,而不是全局应用程序缓存。

然后,我查看了restify-cache,但文档并未明确告诉我如何使用它。

我的应用程序是这样的:

server.js代码:

var restify = require('restify');
var mysqlDB = require('./config/connection');

// REST server declaration and configuration
var server = restify.createServer({
  name: 'test-api',
  version: '0.0.1'
});

server.pre(restify.pre.sanitizePath());
server.use(restify.queryParser());
server.use(restify.acceptParser(server.acceptable));
server.use(restify.queryParser());
server.use(restify.bodyParser());

server.listen(9007, function() {
  console.log('%s listening at %', server.name, server.url);
  mysqlDB.handleDisconnect();
  console.log(new Date() +': Started Cricket API on port 9007');
});

var routes = require('./routes')(server);

route.js代码:

module.exports = function(app) {
app.get('/', function(req, res, next) {
    return res.send("You have reached the test API");
});

var fixtures = require('./controllers/fixtures');
    app.get('/getfixtures', fixtures.getFixtures);  // Get All Fixtures
};

Fixtures.js代码片段:

this.getFixtures = function (req, res, next) {

res.header("Access-Control-Allow-Origin", "*"); 
res.header("Access-Control-Allow-Headers", "X-Requested-With");

console.log("Get All Fixtures");
var mysql = mysqlDB.getConnection();

var query = "SELECT * FROM fixtures WHERE fixture_date >= CURDATE() ORDER BY fixture_date, fixture_time";          
      mysql.query(query,function(err,rows){
        if(err) {
            var status = mysqlDB.getErrorStatus(err.code);
            return res.status(status.code).send("Error : "+ status.Message);                  
        } else {
          var data = [];
          for (i in rows){
            var item = rows[i];

            var output = util.formatDate(item.fixture_date);
            item.fixture_date = output;

            data.push(item);
          };

          return res.send(data);
        }
      });
  };

有人可以给我发送正确的方向吗?我不知道在哪里添加缓存部分?

lulu88

我最终使用了节点缓存。由于我来自Java / Play Framework背景,因此它很容易使用-希望它对以后的其他人有所帮助。

用法示例:

var nodeCache = require( "node-cache" );
var myCache = new nodeCache();

var cachedValue = myCache.get("alltests", true);

if (cachedValue != undefined) {
  return res.send(cachedValue);
} else {
  // Do work here and then:
  success = myCache.set("alltests", valueHere, cacheTime);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重新整理说明

来自分类Dev

重新整理资料

来自分类Dev

错误lib sprintf nodejs重新整理mysql

来自分类Dev

重新整理表格中的数据

来自分类Dev

Caffe是否需要重新整理数据?

来自分类Dev

停止emacs erc的重新整理

来自分类Dev

查询重新整理不会循环

来自分类Dev

用bash / awk重新整理桌子

来自分类Dev

熊猫使用MultiIndex重新整理列

来自分类Dev

使用python重新整理Excel数据

来自分类Dev

重新整理data.frame

来自分类Dev

重新整理磁带测试挂起

来自分类Dev

以新格式重新整理JSON文件

来自分类Dev

重新整理R中的数据

来自分类Dev

当我重新整理DataFrame的副本时,为什么原始DataFrame也被重新整理?

来自分类Dev

缓存Java最佳实践

来自分类Dev

缓存Java最佳实践

来自分类Dev

如何在Laravel中重新整理查询的结果?

来自分类Dev

在if语句旁边重新整理移动大括号。如何换行?

来自分类Dev

如何从父对象重新整理集合中的项目

来自分类Dev

重新整理R中的数据帧(总和概率)

来自分类Dev

重新整理页面时Firebase Auth出现问题

来自分类Dev

将数据框从数组重新整理到矩阵

来自分类Dev

重新整理静态服务,暴露其他文件

来自分类Dev

Git脚本来重新整理和压缩临时提交

来自分类Dev

在提交时停止重新整理数组,但在刷新页面时继续重新整理数组

来自分类Dev

Swift数据缓存-最佳实践

来自分类Dev

缓存的最佳实践。避免冗余缓存?

来自分类Dev

缓存的最佳实践。避免冗余缓存?