如何在node.js中设置标头

时间:2014-06-09 03:17:54

标签: node.js express

我一直在尝试加快我的网站性能,并被告知我应该在将所有内容发送到浏览器之前对其进行gzip。

我找到的解决方案(我希望有效)是包含内容编码标题。

在app.js文件的底部,我有这段代码

http.createServer(app).listen(app.get('port'), function(req,res){
  console.log('Express server listening on port ' + app.get('port'));
  res.setHeader("Content-Encoding","gzip");
});

我收到这样的错误:

C:\Users\user\workspace\site\app.js:35
  res.setHeader("Content-Encoding","gzip");
      ^
TypeError: Cannot call method 'setHeader' of undefined

你能解释一下这里出了什么问题吗?据我所知,代码具有正确的语法。解决方案是什么。

另外,这会加速我的网站正确吗? (我不确定)

我知道的另一件事是不应该在文本之前发送标题。我想这可能是我的问题

2 个答案:

答案 0 :(得分:3)

传递给listen()的回调没有任何参数,只有在服务器绑定到端口然后正在侦听时才会调用它。

对于响应压缩,您可能会考虑使用compression中间件而不是自己尝试。

答案 1 :(得分:0)

如果您想这样做,只需使用路线api,例如getpost

将您的代码更改为:

app.get('/', function(req,res){
  res.setHeader("Content-Encoding","gzip");
});

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});