我最近不得不做一些類似的事情,我從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);
});
也許['express-view-cache'](https://npmjs.org/package/express-view-cache)有用嗎? – robertklep
感謝羅伯特,它看起來像我在找什麼,但作者說這不是生產準備,所以我不願意承諾。我讀過一些其他解決方案,他們建議在壓縮緩衝區中緩存gzip響應,但我還沒有看到任何人做這個的例子。你能評論嗎? – cgarvey
不確定它們是什麼意思的'壓縮緩衝區'。如果你發佈一些鏈接,我會看看它。 – robertklep