gpt4 book ai didi

node.js - 缓存来自 Node/Express/Redis 的压缩响应

转载 作者:IT王子 更新时间:2023-10-29 06:04:42 27 4
gpt4 key购买 nike

我的要求是每天生成多个用户访问的报告。数据仅每 24 小时更改一次。目前,我使用 Node 从存储在 Redis 中的数据创建报告,并生成使用 Express 的 Compress() 方法压缩的响应。创建和压缩这些响应大约需要 40 秒(响应大约是未压缩的 4MB JSON)我的偏好是将这些响应缓存/存储在文件系统或内存中一段时间​​。我不想为此实现 Varnish 或其他反向代理,所以任何人都可以建议另一种有效缓存响应的方法吗?提前致谢。

最佳答案

我最近不得不做一些类似的事情,我从 MongoDB 数据库收到了一个大的 JSON 负载,打算发送给用户应用程序。

我只需要定期更新它,大约每 10 分钟一次,但是对响应进行 GZip 压缩会花费很长时间,所以我会定期抓取数据,对其进行 gzip 压缩并将其存储起来,在此示例中将其作为对 GET 的响应发送要求。

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);
});

关于node.js - 缓存来自 Node/Express/Redis 的压缩响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19378185/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com