nodejs+nginx配置gzip压缩
在个人网站部署到服务器的过程中,为了提高网站的性能,我使用了nginx反向代理Nodejs服务,其中需要去配置gzip来优化网站的加载。为了减少网络传输数据量,http传输过程中会采用通用的压缩算法来压缩数据,gzip属于最常用的压缩算法。
使用node的http模块发送请求时并没有帮我们进行解压,因此我们需要手动去判断gzip。其实只需要在Nodejs中引用一个compress中间件来对gzip进行处理就可以了,代码如下:
var compress = require('compression'); app.use(compress());
另外需要注意的是这个中间件应该放置在所有的中间件最前面以保证所有的返回都是被压缩的。
nginx的配置就比较大众化了,和使用其他后端语言的时候配置类似,在配置文件的http节点中加入:
gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_comp_level 5; gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
1) gzip
语法:gzip on/off
默认值:off
作用域:http, server, location
说明:开启或者关闭 gzip 模块,这里使用 on 表示启动
2) gzip_min_length
语法:gzip_min_length length
默认值:gzip_min_length 0
作用域:http, server, location
说明:设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。|
3) gzip_buffers
语法: gzip_buffers number size
默认值: gzip_buffers 4 4k/8k
作用域: http, server, location
说明:设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k 代表以 16k 为单位,按照原始数据大小以 16k 为单位的4倍申请内存。
4) gzip_comp_level
语法: gzip_comp_level 1..9
默认值: gzip_comp_level 1
作用域: http, server, location
说明:gzip压缩比,1 压缩比最小处理速度最快,9 压缩比最大但处理最慢(传输快但比较消耗cpu)。这里设置为 5。
5) gzip_types
语法: gzip_types mime-type [mime-type ...]
默认值: gzip_types text/html
作用域: http, server, location
说明:匹配MIME类型进行压缩,(无论是否指定)"text/html" 类型总是会被压缩的。这里设置为 application/x-javascript text/css application/xml。