作用:压缩请求
安装:
npm install compression
引用:
var compression = require('compression')
使用:
compression([options])
根据给定的options 参数, 将所有请求的response进行压缩
该中间件不会对请求头信息中包含 Cache-Control 缓存信息,和 no-transform 指令的请求进行压缩,
因为压缩会改变主体内容
options属性
支持如下属性,还支持node.js中的zlib压缩中的属性
chunkSize: 大小,默认 zlib.Z_DEFAULT_CHUNK 或 16384.
zlib 来自 var zlib = require('zlib')
filter: 值是一个方法 fun(req,res) 返回true或false 判断是否压缩
默认情况 res.getHeader('Content-Type') 类型请求返回true
例:
compression({filter:(req,res)=>{
if (req.headers['x-no-compression']) {
return false
}
return true
}})
level:压缩级别 , 级别越高,压缩效果越好,但时间越长 属性值是integer类型 范围是0-9, 0为不压缩
'-1' 为特殊值, 相当于取默认压缩值,(取效果和性能的折中,大概6级左右)
memLevel:内存分配级别, integer类型,范围1-9, 默认是8级
strategy: 优化压缩算法, 只影响压缩性能, 不影响压缩正确性
1.zlib.Z_DEFAULT_STRATEGY:正常
2.zlib.Z_FILTERED:使用过滤后的数据,数据会很分散,即使这样,优化效果也很好,该值算法介于zlib.Z_DEFAULT_STRATEGY 和 zlib.Z_HUFFMAN_ONLY 之间
3.zlib.Z_FIXED:阻止动态Huffman coding的使用, 一些特殊程序可能会用到
4.zlib.Z_HUFFMAN_ONLY:只能使用Huffman coding
5.zlib.Z_RLE:将匹配距离限制设置为1, 与zlib设计一样,但能更好的压缩PNG图片
windowBits: 窗口大小(历史缓冲区的大小) ,默认值 zlib.Z_DEFAULT_WINDOWBITS 或 15
值越大,将耗费更多的内存,同时带来更好的压缩结果。
方法:
compression.filter(req, res)
调用默认过滤器,以下方法可以在过滤完自定义之后在进行默认过滤
compression({filter:(req,res)=>{
if (req.headers['x-no-compression']) {
return false
}
return compression.filter(req, res)
}})
res.flush:
强制将压缩刷新到客户端