Node.js Express:响应压缩无效

3
我正在尝试使用NodeJS/Express提供压缩后的视图。
即使我正确地配置了应用程序,也没有压缩的痕迹。只有静态文件被压缩。
如果我在Chrome中访问视图,我找不到字段Content-Encoding: gzip
以下是我的Express应用程序的配置:
    app.set('port', process.env.PORT || 3000);
    app.set('views', __dirname + '/views');

    app.engine('html', ejs.renderFile);
    app.set('view engine', 'ejs');

    app.use(express.favicon());
    app.use(express.logger('dev'));

    app.use(express.bodyParser());
    app.use(expressValidator());
    app.use(express.methodOverride());

    app.use(express.staticCache());
    app.use(gzippo.staticGzip( path.join(__dirname, 'public') ,{maxAge:86400000} ));
    app.use(gzippo.compress());
    //app.use(express.compress());

    app.use(app.router);

请注意,我正在使用gzippo进行压缩。然而,基本的压缩express.compress()也不起作用。

为什么你在使用gzippo?它不支持Node 0.10。 - Jonathan Ong
请查看我的答案:https://dev59.com/yZPea4cB1Zd3GeqP_ilW#75308588 - Gilbert
1个回答

5

将压缩选项移动到查看项目之后的第一项。另外,在检查Chrome网络标签查找编码头之前,请务必清除缓存。


但是为什么压缩必须放在所有其他操作之前呢? - Brainlag
1
我理解在压缩之前视图已经被服务:http://expressjs.com/3x/api.html#app.use“使用app.use()定义中间件的顺序非常重要,它们按顺序调用,因此这定义了中间件的优先级。”...我正在尝试弄清楚如何在Express 4中使用压缩... - jimmont
1
我一直在努力弄清楚为什么我的内容类型没有被设置。如果您在Chrome中清除缓存,则内容类型将被正确设置。谢谢。 - TYRONEMICHAEL
1
奇怪的是,在Chrome的网络选项卡中显示“Content-Encoding:gzip”,但在每个gzip测试工具中都显示没有gzip压缩。http://checkgzipcompression.com/ 有什么想法,我应该相信哪个工具? 好吧,谷歌的工具告诉我是的: https://developers.google.com/speed/pagespeed/insights/ - Andi Giga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接