我想gzip我的index.pug因为显然它是必需的,所以我可以在传单上使用某些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');
});
};
`
我需要设置标题 res.setHeader('内容编码',' gzip'); ,但是当我这样做时收到此错误:ERR_CONTENT_DECODING_FAILED
我读到错误是由文件未压缩引起的。
这是我运行curl时得到的:
HTTP/1.1 200 OK
vary: Origin, Accept-Encoding
access-control-allow-credentials: true
x-xss-protection: 1; mode=block
x-download-options: noopen
x-content-type-options: nosniff
content-type: text/html; charset=utf-8
content-length: 26424
etag: W/"6738-EwRjd2/5wySxOECqPhvhuiz7rTc"
date: Wed, 10 Jan 2018 22:22:40 GMT
X-BACKEND: apps-proxy
修改
所以我认为问题是压缩是用zlib压缩它,当我需要它是gzip时。任何想法如何改变?
答案 0 :(得分:0)
所以我意识到它实际上正在抓住它。我正在运行ResponseEntity
命令,它只是发出一个HEAD请求。由于没有要压缩的主体,因此不会添加标头。而是使用curl -I --compress
命令,以便您可以查看它是否正在压缩身体。