聊聊字符集编码与数据压缩( 七 )


inflateInit2 :解压初始化的基础函数
infalte :解压函数
inflateEnd :同deflateEnd作用类似
uncompress :解压缩
解压初始化:

聊聊字符集编码与数据压缩

文章插图
 
strm:和deflate 一样 , 初始化三个回调 。
windownBits :含义和deflateInit2 一样
解压函数:
聊聊字符集编码与数据压缩

文章插图
 
z_streamp : 四个参数
strm.next_in = 待解压数据
strm.next_out = 解压以后数据存储的 buffer
strm.avail_in = 待解压数据的长度
strm.avail_out = 解压数据存储 buffer 的长度
flush :如果是 Z_NO_FLUSH , 说明还有数据没有解压 。
如果是Z_FINISH说明这是最后一包待解压的数据
资源释放:
聊聊字符集编码与数据压缩

文章插图
 
10.gzip 压缩提升网站速度
讲讲对于Nginx而言 , 怎样去优化 。
# 开启 gzipgzip on# 启用 gzip 压缩的最小文件 , 小于设置值的文件将不会压缩gzip_min_length1k;# gzip 压缩级别 , 1-9 , 数字越大压缩的越好 , 也越占用 CPU 时间 , 后面会有详细说明gzip_comp_level1;# 进行压缩的文件类型 。JAVAscript 有多种形式 。其中的值可以在 mime.types 文件中找到 。gzip_typestext/plainApplication/JavaScriptapplication/x-javascripttext/cssapplication/xmltext/javascriptapplication/x-httpd-phpimage/jpegimage/gifimage/pngapplication/vnd.ms-fontobjectfont/ttffont/opentypefont/x-woffimage/svg+xml;# 是否在 http header 中添加 Vary: Accept-Encoding , 建议开启gzip_vary on;# 禁用 IE 6 gzipgzip_disable"MSIE [1-6].";#设置压缩所需要的缓冲区大小gzip_buffers324k;# 设置 gzip 压缩针对的 HTTP 协议版本 , 没做负载的可以不用# gzip_http_version 1.0;# 开启缓存location ~* ^.+.(ico|gif|jpg|jpeg|png)$ {access_log off;expires 2d;}location ~* ^.+.(css|js|txt|xml|swf|wav)$ { access_log off; expires 24h;}location ~* ^.+.(html|htm)$ { expires 1h;}location ~* ^.+.(eot|ttf|otf|woff|svg)$ { access_log off; expires max;}# 格式# expires 30s;# expires 30m;# expires 2h;# expires 30d;以上单独参数的说明:
gzip on:
打开或关闭gzip
Syntax: gzip on | off;
Default: gzip off;
Context: http, server, location, if in location
gzip_buffers:
用于处理请求压缩的缓冲区数量和大小 。如32 4K表示按照内存页为单位 , 建议使用默认值 。
Syntax: gzip_buffers number size;
Default: gzip_buffers 32 4k|16 8k;
Context: http, server, location
gzip_comp_level
设置gzip压缩级别 , 级别越低压缩速度越快 , 文件压缩比越小 。反之速度越慢文件压缩比越大 。
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1;
Context: http, server, location
gzip_disable
通过表达式 , 表明哪些 UA 头部使用 gzip 压缩 。
Syntax: gzip_disable regex ...;
Default: —
Context: http, server, location
This directive appeared in version 0.6.23.
gzip_min_length
表示当资源大于该长度时 , 才进行压缩 , 资源大小取响应头中的Content-Length 进行比较 , 如果响应头不存在 Content_length 信息 , 该限制参数对于这个响应包是不起作用的;这个值不建议设置太小 , 如果太小 , 一些本来很小的文件 , 经过压缩 , 反而变大 , 建议1k起 , 当然也需要根据自己实际的情况来去设计 。
Syntax: gzip_min_length length;
Default: gzip_min_length 20;
Context: http, server, location
gzip_http_version
识别 http 协议的版本 , 早期的浏览器不支持 gzip 压缩 , 用户会看到乱码 。默认在http1.0的协议下不开启gzip压缩 。
Syntax: gzip_http_version 1.0 | 1.1;
Default: gzip_http_version 1.1;
Context: http, server, location
gzip_proxied
Nginx 作为反向代理的时候启用:
off – 关闭所有的代理结果数据压缩
expired – 如果 header 中包含 "Expires" 头信息 , 启用压缩
no-cache – 如果 header 中包含 "Cache-Control:no-cache" 头信息 , 启用压缩
no-store – 如果 header 中包含 "Cache-Control:no-store" 头信息 , 启用压缩
private – 如果 header 中包含 "Cache-Control:private" 头信息 , 启用压缩
no_last_modified – 启用压缩 , 如果 header 中包含 "Last_Modified" 头信息 , 


推荐阅读