Nginx的Gzip压缩
Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!在Nginx配置文件中可以配置Gzip的使用,相关指令可以在http区域
server区域、location区域配置。Nginx可以通过ngx_http_gzip_module模块、ngx_http_gzip_static_module模块和ngx_http_gunzip_module模块对这些指令进行解析和处理。
本章主要包括的内容有:
- Gzip压缩配置指令说明
- Gzip压缩功能使用
- Gzip压缩常见问题解决
1、Gzip压缩配置指令说明
- ngx_http_gzip_module模块指令说明
gzip指令 该指令用于开启关闭Gzip压缩功能, 默认为关闭状态。只有配置了on,gzip功能才有效
gzip <<on | off>>
for example: gzip on
gzip buffers指令 该指令用于设置文件使用的缓存空间大小,number为指定Nginx服务器要向服务器申请的缓存空间的个数,size 每个缓存的空间大小,从0.7版本之后默认情况下size*number的值为128,其中size去系统内存页的大小
gzip buffers <<number>> <<size>>
for example: gzip buffers 32 4k;
gzip_comp_level指令该指令设定文件压缩等级,包括1~9级,数值越小压缩程度越低。效率最高。花费的时间越少
gzip_comp_level <<level>>
for example: gzip_comp_level 1;
gzip_disable 支持针对不同匹配条件选择项关闭压缩功能,其中regex根据浏览器标志进行设置,支持使用正则表达式
gzip_disable <<regex...>>
for example: gzip_disable MISE [4-6]\.;
gzip_http_version 支持针对不同的http版本设置。早期的浏览器或者http不支持Gzip压缩功能,可能会出现乱码等现象。截止目前大多数客户端都支持Gzip压缩功能,因此选择默认即可
gzip_http_version <<version>>
for example: gzip_http_version 1.0|1.1;
gzip_min_length 指定请求的数据超过某个阈值后才开启Gzip压缩功能,压缩很小的珊瑚橘反而会把数据变大,从而影响性能
gzip_min_length <<size>>
for example: gzip_min_length 1024;
gzip_types 指定压缩的文件类型,一般指定常规文件类型即可。
gzip_types <<types...>>
for example: gzip_types text/plain;
gzip_vary 设置为开启,服务器返回数据时会在头部带上"Vary:Accept-Encoding"的标识。客户端便可以知道获取到的数据是否已经被压缩,默认为关闭
gzip_vary <<on | off>>
for example: gzip_vary on;
2、Gzip压缩功能使用
前面已经基本将Gzip压缩功能涉及配置指令罗列完毕,接下来针对请求相同的资源文件,比较在开启和关闭Gzip压缩功能两种情况下,数据请求的效率以及花费的时间。
- 关闭Gzip压缩功能服务器配置文件内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /data/software/nginx/html/dist;
index index.html index.htm;
}
}
}
在谷歌浏览器请求所有资源返回的截图:
- 开启Gzip压缩功能服务器配置文件内容:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#开启gzip压缩功能
gzip on;
gzip_min_length 1024;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types *;
gzip_vary on;
server {
listen 80;
server_name localhost;
location / {
root /data/software/nginx/html/dist;
index index.html index.htm;
}
}
}
在谷歌浏览器请求所有资源返回的截图:
对比红线线圈中的文件,花费的时间基本减少一半以上。综合来讲,对于大文件来讲,开启Gzip压缩功能确实大大提高了服务器的性能,可以有更好的用户体验。本次测试只是将该功能设置在http区域块,当然还可以设置在server区域、location区域。更多的测试这里不再一一列举。