摘要

书接上回,本文介绍下静态网页的一些内容。

虽然nginx对静态资源的访问很快,但一些数据还是可以再次加快访问速度的,有哪些方面的优化是我们可以在nginx中进行的处理的那,且听笔者和你慢慢道来。

http 部分

压缩

今天所讲部分还是http部分。第一部分就是要对页面的传输进行压缩。压缩是有前提条件,如果您是自己源码编译的nginx,需要查看您的模块是否包含gzip模块,您可以使用如下命令进行查看

$ nginx -V
nginx version: nginx/1.21.6
......
configure arguments: --with-http_gunzip_module --with-http_gzip_static_module

如果您的输出中含有这些模块,那么就可以使用压缩指令。一般编译nginx是默认开启这些模块的,如果您在windows上编译,可能会提示您找不到gzip库,让您用–without-gzip编译参数忽略压缩。所以,一般不需要担心压缩没有启用。

压缩部分配置如下:

gzip on; #开启gzip压缩输出
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;

先讲解下压缩的指令

首先要让nginx明白,我要启用压缩,所以,第一步就要配置一个gzip on;的配置,只有启用了压缩,下面的配置选项才能生效。

启用了压缩,那要对哪些文件进行压缩哪?我们需要配置gzip_types ,后面跟着的就是返回的头中的类型content-type为 text/plain (纯文本) , applicaiton/x-javascrip (js脚本) , text/css(css样式文件),applicaiton/json(json格式文件) , applicaiton/xml (xml格式文件)等等,nginx就会对我们配置的请求类型的返回数据进行压缩。

这时,可能有朋友就要问了,如果我没有配置这些类型,nginx会不会把所有的返回数据都压缩了?抱歉,不会,nginx会有一个默认的配置text/html,html页面的会被默认压缩。也不一定,还有一个条件,就是下面我们要讲的gzip_min_length 配置项。

gzip_min_lenght配置项,后面跟着的是多大的文件我们才需要压缩,如果文件太小,使用数据压缩的话,可以压缩的时间都要比传输的时间还要长,有点得不偿失,所以,小与一定大小的文件,nginx是不会进行压缩的,我们可以设置1k,1M等等,默认值为0,无论页面多大,都会被压缩;建议设置大于1k。

既然是压缩要浪费CPU的,是不是有压缩的级别可以配置,是的,gzip_comp_level就是可以设置压缩的级别,可以平衡压缩与数据大小的关系,1级压缩比最小,处理速度快,压缩比较小,数据包比较大,9级压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快。

比较完整的nginx配置

http {
    include       mime.types;
    default_type  application/octet-stream;



    gzip on; #开启gzip压缩输出
    gzip_min_length 1k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    
    server {
        listen       81;
        server_name  localhost;

        location / {
            root   /opt/zfsoft/front/;
            index  index.html index.htm;
        }
    }
}

PS:小知识点,如果nginx在配置过程中发现一些指令配置错误,可以看看该指令在那个模块,如果nginx编译过程中没有编译该模块,则指令则无法使用。

使用nginx -V可以查看nginx中含有的模块,看看是否有 –with–(模块名)。如果没有,则可以重新编译nginx,增加相应的模块。

后续

本文主要是介绍了nginx对页面或数据的压缩,配置压缩的一些指令。敬请期待后续。

个人博客