nginx服务端配置gzip

nginx服务端配置gzip by niuzhiyong

mac下安装nginx

  • 介绍

    image

1、安装nginx,默认安装就好,

brew install nginx

image

如果没有brew,需要安装brew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2、启动nginx

sudo nginx

OK, nginx就安装好了,可以在浏览器访问了,默认端口为8080,

在浏览器输入 http://localhost:8080/ 就能看到nginx在本计算机搭建的服务器

3、简单配置nginx,

mac 命令行,可以

vim /usr/local/etc/nginx/nginx.conf

image

或者直接编辑器打开

image

如果找不到路径,可以查看mac的隐藏文件夹,用下面的命令显示隐藏文件

ctrl + shift + .

配置好之后要重启nginx

sudo nginx -s reload

gzip配置详解

  • 配置参数

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
  • 参数解析

参数

说明

默认值

gzip on/off

开启/关闭gzip压缩

默认是off

gzip_min_length 1k

允许压缩的页面最小字节数

默认为0

gzip_buffers 4 16k

系统获取几个单位的缓存用于存储gzip的压缩结果数据流,4 16k 代表以16k为单位,按照原始数据大小以16k为单位的4倍申请内存

gzip_http_version 1.1

设置http1.1协议才进行压缩

默认为1.1

gzip_comp_level 6

表示gzip的压缩级别,范围是1-9,数据越大,压缩的越小,耗CPU,传输更快,一般选择适中的级别

默认为1

gzip_types

设置哪种类型可以进行压缩,需要什么类型可以在参考nginx.conf同目录下的mime.types文件

默认是text/html

gzip_disable

禁用gzip的条件,这里表示禁用IE1-6的版本,因为低版本不支持gzip

gzip_vary on

给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断是否需要压缩

  • 判断gzip是否起作用

举个例子:比如访问允许压缩的一个类型,我直接在浏览器地址上访问这个资源文件,在F12中的Network中观察请求,在请求中的Response Headers中如果有Content-Encoding: gzip就表示改文件是经过压缩传输的

注意: gzip压缩的出现如此的令人振奋,但是还有以下三个注意点:

  • 低版本浏览器:一些浏览器接受压缩文件还是有问题(他们说他们可以但是他们并不行),如果你的站点必须在window95的网景1.0浏览器上,你可能不想要压缩文件。

  • 已经压缩过的文件:大多数的图片,音乐和视频都已经压缩过了,不要浪费时间来压缩他们了。只压缩(HTML,CSS,JAVARSCRIPT)即可。

  • CPU负载:在传输过程中压缩文件耗费CPU但是节省带宽(用空间换时间)。通常压缩速率的选择需要权衡利弊。也存在一些预压缩静态文件的方法,但这要求更多的资源。考虑了cpu的耗费,压缩文件也是利大于弊。通过压缩实现更好的用户体验,更短的留白时间,值!

不建议压缩的文件

1、图片类型

原因:图片如jpg、png本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。从下面的图中看出压缩图片的价值并不大

2、大文件

原因:会消耗大量的cpu资源,且不一定有明显的效果。(这个待测试)

压缩前后对比

  • 压缩前

    image

  • 压缩后

    image

Last updated

Was this helpful?