我想对我的index.pug进行gzip压缩,因为显然这是必需的,以便我可以在传单上使用某些VectorTiles。
这是我的 server.js
`
var loopback = require('loopback');
var boot = require('loopback-boot');
var compression = require('compression');
var bodyParser = require('body-parser');
var $ = require('jquery');
var app = module.exports = loopback();
var session = require('client-sessions');
var path = require('path');
app.set('views', path.join(__dirname, '../views'));
app.set('view engine', 'pug');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(compression());
app.use(loopback.static(__dirname+'../views'));
app.use(session({
cookieName: 'session',
secret: 'random_string_goes_here',
duration: 30 * 60 * 1000,
activeDuration: 5 * 60 * 1000,
}));
app.start = function() {
// start the web server
return app.listen(function() {
app.emit('started');
var baseUrl = app.get('url').replace(/\/$/, '');
console.log('Web server listening at: %s', baseUrl);
if (app.get('loopback-component-explorer')) {
var explorerPath = app.get('loopback-component-explorer').mountPath;
console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
}
});
};
`
这就是我渲染“.pug”文件的地方
`
module.exports = function (app) {
app.get('/', function (req, res) {
//res.setHeader('Content-Encoding', 'gzip');
res.render('index.pug');
});
};
`
我需要能够设置 header res.setHeader('Content-Encoding', 'gzip');,但是当我这样做时,我收到此错误:ERR_CONTENT_DECODING_FAILED
我了解到该错误是由文件未压缩引起的。
这是我运行curl时得到的结果:
HTTP/1.1 200 好
变化:来源、接受编码
访问控制允许凭据:true
x-xss-保护:1;模式= block
x-下载选项:noopen
x-内容类型-选项:nosniff
内容类型:文本/html;字符集=utf-8
内容长度:26424
etag:W/“6738-EwRjd2/5wySxOECqPhvhuiz7rTc”
日期:2018 年 1 月 10 日星期三 22:22:40 GMT
X-BACKEND:应用程序代理
编辑
所以我认为问题是当我需要它是gzip时压缩是用zlib压缩它。有什么想法可以改变吗?
最佳答案
所以我意识到它实际上是对其进行压缩。我正在运行 curl -I --compress
命令,该命令仅发出 HEAD 请求。由于没有要压缩的正文,因此不会添加 header 。请改用curl -is --compress
命令,以便您可以查看它是否正在压缩正文。
关于javascript - 如何在 Node JS 中 gzip 一个 jade 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48195554/