您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
nginx-nginx gzip压缩提升网站速度
发布时间:2017-11-23 12:18:55编辑:雪饮阅读()
压缩算法:
经常会遇到这样的情况:
浏览器访问一个html后用f12打开控制台在network选项卡中找到所访问的html单击然后在Headers中的Response Headers中可以看到Content-Length是服务器端返回的你所访问的资源的大小,另外Content-Encoding为gzip
这里访问的是html。然后查看该html的代码看其声明的编码是什么,然后将代码全部复制并建立同编码的文件。例如该编码声明为gbk则建立的文件在存储的时候选择ANSI存储。然后在windows的文件属性的”常规”选项卡中观察其大小会发现该文件的实际大小可能会比Content-Length要大。
这就是gzip压缩的功劳。
观察Request Headers会发现其下的Accept-Encoding有gzip,deflate,sdch这三个值。
这是当前浏览器可接受的压缩算法,其中sdch是google自己家推的一种压缩方式
压缩算法是双向的,即浏览器端与服务器端要都支持相同的一个算法,那么该算法才可以被双方都接受。服务器端对文件压缩使用该算法,浏览器端解压也使用该算法。
nginx配置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/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off # 是否传输gzip压缩标志
压缩标志是告诉浏览器的
压缩类型中html是默认不填就压缩的
如果文件类型的mime完整类型不清楚可以在nginx的conf/mime.types中查找。
nginx中在server段的全局中配置局部代码如
server {
listen 80;
server_name localhost;
gzip on;
gzip_buffers 32 4k;
gzip_comp_level 6;
gzip_min_length 200;
gzip_types text/css text/xml application/x-javascript;
root /usr/local/nginx/html;
location / {
index index.php index.html;
}
location ~* \.(jpg|jpeg|gif|png) {
expires 1d;
}
这里只配置了JavaScript文件的压缩,但是html也会生效的,因为html默认即使不填写,也同样会压缩的。
配置生效后如果内容达到可以压缩的大小则成功压缩
出现一个新问题使用了gzip后无法看的Content-Length的值,此时会发现“Transfer-Encoding:chunked”
由于压缩算法使用了分块传输,所以不知道具体多大
注意:
(1)图片、音乐等二进制文件,不必压缩,其压缩率比较小,压缩不划算,且压缩功能本就是耗费cpu资源的。
(2)为什么有些文件压缩后会变大。
一般小文件压缩后会变大
因为压缩文件有其自身格式,该格式数据使其变大
关键字词:nginx,gzip,压缩