nginx实现资源压缩的原理是通过ngx_http_gzip_module模块拦截请求,并对需要做gzip的类型做gzip压缩,该模块是默认基础的,不需要重新编译,直接开启即可。 基本配置# 开启gzipgzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩gzip_min_length 1k; # gzip 压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间,后面会有详细说明gzip_comp_level 1; # 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/vnd.ms-fontobject font/ttf font/opentype font/x-woff image/svg+xml; # 是否在http header中添加Vary: Accept-Encoding,建议开启gzip_vary on; # 禁用IE 6 gzipgzip_disable "MSIE [1-6]//."; # 设置压缩所需要的缓冲区大小gzip_buffers 32 4k; # 设置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; 检测效果1.nginx的response headers中的Content-Encoding是gzip 2.返回文件大小明显被压缩 压缩说明 gzip on打开或关闭gzip默认 off 关闭代码块 http, server, location, if in location gzip_buffers设置用于处理请求压缩的缓冲区数量和大小。比如32 4K表示按照内存页(one memory page)大小以4K为单位(即一个系统中内存页为4K),申请32倍的内存空间。建议此项不设置,使用默认值。 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_comp_level 1的压缩能力已经够用了,后面级别越高,压缩的比例其实增长不大,反而很吃处理性能。 另一方面,压缩一定要和静态资源缓存相结合,缓存压缩后的版本,否则每次都压缩高负载下服务器肯定吃不住。 gzip_disable通过表达式,表明哪些UA头不使用gzip压缩 |