架构师之路系列 NO.2 让你的网站快 3 倍之 Nginx-gzip 压缩
百度百科是这么解释 Gzip 的:
GZIP 最早由 Jean-loup Gailly 和 Mark Adler 创建,用于 UNⅨ系统的文件压缩。我们在 Linux 中经常会用到后缀为.gz 的文件,它们就是 GZIP 格式的。现今已经成为 Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式。
HTTP 协议上的 GZIP 编码是一种用来改进 WEB 应用程序性能的技术。大流量的 WEB 站点常常使用 GZIP 压缩技术来让用户感受更快的速度。这一般是指 WWW 服务器中安装的一个功能,当有人来访问这个服务器中的网站时,服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来.一般对纯文本内容可压缩到原大小的 40%.这样传输就快了,效果就是你点击网址后会很快的显示出来.当然这也会增加服务器的负载. 一般服务器中都安装有这个功能模块的。
Gzip 压缩原理:
当我们使用浏览器请求时,Http 请求头部会携带一个”Accept-Encoding: gzip, deflate, sdch”,这是在告诉服务器此浏览器可以接受的压缩格式, 其中所有浏览器都支持 gzip 这个压缩格式.
当服务器响应之后,在 Http 响应头部也有一个”Content-Encoding:gzip”,则是告诉浏览器,此响应内容是经过 gzip 压缩之后的,浏览器则会自动解压,然后才展现到用户界面.
这样一来,本来文件大小如果是 200kb 左右大小,经过压缩之后可能只有 60kb(大概是原来的 1/3).
它的优势就很明显,可以大大节约网络带宽流量,在网络传输层面网站响应速度当然就是质的提升了,网站打开速度大概能快 2-3 倍,这就是此次优化的目的!
此次我们在 nginx 下来使用 gzip
配置 | 参数 | 说明 |
gzip | on|off | 是否开启 gzip |
gzip_buffers | 32 4K|16 8K|16 16k… | 缓冲(压缩在内存中缓冲几块,每块多大) |
gzip_comp_level | [1-9] | 压缩级别,推荐 6,级别越高,压得越小,同时越节省带宽资源,但更浪费 cpu 资源 |
gzip_disable | 正则匹配 URL(什么样的 uri 不进行 gzip 压缩) | |
gzip_min_length | 2000 | 开始压缩的最小长度 |
gzip_http_version | 1.0|1.1 | http 协议的版本(可以不设置) |
gzip_proxied | expired no-cache no-store private auth | 设置请求者代理服务器,该如何缓存内容 |
gzip_types | text/plain|application/xml | 对哪些文件进行压缩 如 txt,xml,css,js,html |
gzip_vary | on|off | 是否传输 gzip 压缩标志 |
gzip 配置可以写在 nginx 的 http 段,server 段和 location 段中,一般我们把它写在 server 中,即对整个网站都进行压缩!
以下是本机的压缩实例,大家可以照搬
gzip on; gzip_buffers 32 4k; gzip_comp_level 6; gzip_min_length 200; gzip_types text/css text/xml application/x-javascript text/plain;