我已经在这几个小时了..
我做的第一件事就是跟随this http://blog.modulus.io/nodejs-and-express-static-content教程有这个代码:
var express = require('express');
var app = express();
// New call to compress content
app.use(express.compress());
app.use(express.static(__dirname + '/public'));
app.listen(3333);
自然,代码已经过时了..并且我得到了这个错误:
Error: Most middleware (like compress) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware.
所以我将代码更新为:
var express = require('express');
var app = express();
var compression = require('compression')
app.use(compression());
app.use(express.static(__dirname + '/_public' ));
app.listen(3333);
效果很好..但我没有看到压缩的证据(我怎么知道?通过查看 chrome 开发工具响应标头:
它没有 gzipcontent-encoding
标题如教程中的标题:
所以尝试使用zlib http://nodejs.org/api/zlib.html图书馆代替:
var express = require('express');
var app = express();
var maxAge = 31557600000;
var zlib = require('zlib');
app.use(express.static(__dirname + '/_public' ));
app.get('/*', function(req,res)
{
res.sendFile(__dirname + '/_public/index.html').pipe(zlib.createGunzip()).pipe(output);
});
app.listen(3333);
但这也没有成功..此时我几乎秃顶了..有什么帮助吗?
附注压缩docs https://www.npmjs.org/package/compression假设您可以提供 zlib 选项,但无法提供任何示例/解释。
update:这个问题已经得到充分回答并标记为这样(我讨厌移动目标问题)..但我忍不住问:那么你如何验证你的原始有效负载因 gzip 压缩而被修剪了多少?由于压缩/解压缩自然发生在幕后,因此 chrome 开发工具将在其网络选项卡中报告文件的原始大小: