我的要求是每天生成报告,多个用户可以访问。数据每24小时才会更改。
目前我使用Node从存储在Redis中的数据创建报告,并生成使用Express的Compress()方法压缩的响应。
创建和压缩这些响应大约需要40秒(未压缩的JSON响应大小约为4MB)
我的首选是将这些响应缓存/存储在文件系统或内存中一段时间。
我不想仅为此实现Varnish或其他反向代理,请问是否有其他方法可以有效地缓存响应?
提前感谢。
var zlib = require('zlib');
var Buffer = require('buffer').Buffer;
var express = require('express');
var app = express();
var yourData, cachedGzip;
// zlib performs gzip compression, passes payload to callback asynchronously
zlib.gzip(new Buffer(yourData)), function(err, data){
cachedGzip = data
});
// Somewhere later in your app...
// Can now use the cached data for gzip responses, example route
app.get('/', function(req, res) {
res.header('Content-Type', 'application/json');
res.header('Content-Encoding', 'gzip');
res.send(cachedGzip);
});
express-view-cache
很有用? - robertklep