javascript - 如何在 Node JS 中 gzip 一个 jade 模板

标签 javascript node.js leaflet gzip

我想对我的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/

相关文章:

javascript - 如何向除 IE 之外的所有浏览器提供 JS 文件

node.js - 使用sequelize-cli后如何从sequelize.model获取模型

javascript - 如何从 Mapbox map 中删除缩放控制?

javascript - Leaflet.markercluster:动画不起作用

javascript - react : How to open a newly added accordion item?

javascript - 使用 Mongoose 进行动态查询

php - 使用 XMLHTTP 请求同一主机上的 PHP 文件的 Javascript 违反了同源策略?

node.js - 类型错误 : flatMap is not a function

node.js - Yarn 本地包依赖项

r - react table R Shiny 内的传单图