我一直在尝试加快我的网站性能,并被告知我应该在将所有内容发送到浏览器之前对其进行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
你能解释一下这里出了什么问题吗?据我所知,代码具有正确的语法。解决方案是什么。
另外,这会加速我的网站正确吗? (我不确定)
我知道的另一件事是不应该在文本之前发送标题。我想这可能是我的问题
答案 0 :(得分:3)
传递给listen()
的回调没有任何参数,只有在服务器绑定到端口然后正在侦听时才会调用它。
对于响应压缩,您可能会考虑使用compression中间件而不是自己尝试。
答案 1 :(得分:0)
如果您想这样做,只需使用路线api,例如get
或post
。
将您的代码更改为:
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'));
});