node中间件之compression

node中间件之compression

zhengel关注

2017.12.29 11:16:39字数 522阅读 3,093

作用:压缩请求

安装:

 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:

强制将压缩刷新到客户端

发布了363 篇原创文章 · 获赞 32 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/gwdgwd123/article/details/104362910