一、观察Http响应:
Http请求:
Accept-Encoding:gzip,deflate,sdch
Http响应:
Content-Encoding:gzip
Content-Length:65016
再把页面另存下来,文件大小约271,544字节,实际传输的65016字节 ,原因就在于gzip压缩上
原理:
1.浏览器->请求->声明可以接受的压缩技术:gzip压缩或deflate压缩或compress或sdch压缩
(从http协议的角度看--请求头 声明 acceopt-encoding: gzip deflate sdch ,其中sdch是google倡导的一种压缩算法,目前支持的服务器尚不多)
2.服务器->回应(把内容用gzip方式压缩)->发给浏览器
3.浏览器接收gzip压缩内容->解码gzip->返回原数据内容
作用:利用压缩技术可以大幅度地节省带宽
二、Nginx配置gzip:
gzip配置的常用参数 :
gzip on|off #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 #开始压缩的最小长度(再小就不要压缩了,意义不大)
gzip_http_version 1.0|1.1 #开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied #设置请求者代理服务器该如何缓存内容
gzip_types text/html application/xml #对哪些类型的文件采用压缩,如html、css(文件类型对应关系查看conf/mime.types)
gzip_vary on|off #是否传输gzip压缩标志
注意,以下几种文件不必压缩:
1.图片/mp3这样的二进制文件压缩比太小,不必压缩
2.因为压缩率比较小, 比如80-100字节,而且压缩也是耗费CPU资源的
3.比较小的文件不必压缩
实例:
gzip on;
gzip_buffers 32 4k;
gzip_com_level 6;
gzip_min_length 4000;
gzip_type text/css text/xmlapplication/javascript;