人员配置方法演练

人员配置方法演练,第1张

Nginx演练(3)配置内容压缩

如果你熟悉HTTP,你应该熟悉请求-响应请求过程。


比如访问“www.jd.com”,一个完整页面的访问,往往是由很多HTTP请求完成的,这会涉及到浏览器并发的数量。具体片段如图
所示

客户端请求的资源有很多种,比如jpg、css、js、html等。不同的文件类型对应不同的MIME_TYPE。每个文件都必须通过网络传输到客户端,这样才能被浏览器渲染呈现给用户。大家一定都有给朋友发文件的经历,不管是QQ传输还是邮件传输。如果一个文件太大,你想节省一些传输时间,你总是在发送前压缩它。实际上,我们的web服务器也为。接下来通过对比详细练习效果。

1.准备环境。

1.1准备测试示例

以bootstrap帮助文档为例。当然,如果你喜欢也可以选择其他资源,这不是重点。

1.2配置nginx支持两台虚拟主机。需要两台虚拟主机来配置不同的压缩参数。

  server {         # 监听的IP和端口         listen 192.168.163.146:80;         server_name server1.domain.com;         access_log logs/server1.access.log main;         gzip on;         gzip_buffers 4 8k;         gzip_comp_level 2;         gzip_min_length 20;         gzip_proxied off;         gzip_types text/css;         gzip_vary off;         location /         {             index index.html index.htm;             #存放目录             root /u01/up1/bootstrap-3.3.5/docs;         }     }     server {         # 监听的IP和端口         listen 192.168.163.146:80;         server_name server2.domain.com;         access_log logs/server2.access.log main;                 location /         {             index index.html index.htm;             #存放目录             root /u01/up2/bootstrap-3.3.5/docs;         }     }

2.打开css文件的压缩

 gzip_types text/css;

测试结果图表

使用的监控工具是:chromewebdevTool工具。

大小/内容:

大小是响应头和响应体的组合大小,

内容是所请求内容的解码大小。

http://stackoverflow.com/的解释

“大小”是线路上的字节数,“内容”是资源的实际大小。许多因素会使它们变得不同,包括:

  • 从缓存提供服务(小或0“大小”)

  • 响应头,包括cookies(比“内容”更大的“大小”)

    重定向或身份验证请求

    gzip压缩(通常“大小”比“内容”小)


    时间/延迟:

    时间是从请求开始到收到最后一个字节的总时间;

    延迟是从请求开始到收到第一个字节的时间;


    压缩在server2.domain.com是不开的,大小基本等于内容。


    当server1.domain.com压缩打开时,大小基本上等于内容大小的1/6。

    压缩前后,时间从120ms下降到17ms,近10倍。


    3.了解压缩级别gzip_comp_level

        server {         # 监听的IP和端口         listen 192.168.163.146:80;         server_name server1.domain.com;         access_log logs/server1.access.log main;         gzip on;         gzip_buffers 4 8k;         #修改gzip_comp_level为5         gzip_comp_level 5;         gzip_min_length 20;         gzip_proxied off;         gzip_types text/css;         gzip_vary off;         location /         {             index index.html index.htm;             #存放目录             root /u01/up1/bootstrap-3.3.5/docs;         }     }


    gzip_comp_level为5时的压缩效果

    gzip_comp_level
    压缩
    2
    120k-23.7k
    5
    120k-20.0k
    8
    120k-19.5k

    可视级别越高,压缩效果越好。当然,任何事情都有两面性。级别越高,CPU资源越高。


    4.根据文件类型和大小进行条件压缩

    修改两个虚拟主机配置。

     ...     server {         # 监听的IP和端口         listen 192.168.163.146:80;         server_name server1.domain.com;         access_log logs/server1.access.log main;         gzip on;         gzip_buffers 4 8k;         gzip_comp_level 2;         #大小超过20k的进行压缩         gzip_min_length 20k;         gzip_proxied off;         gzip_types text/css application/xml;         gzip_vary off;         location /         {             index index.html index.htm;             #存放目录             root /u01/up1/bootstrap-3.3.5/docs;         }     }     server {         # 监听的IP和端口         listen 192.168.163.146:80;         server_name server2.domain.com;         access_log logs/server2.access.log main;         gzip on;         gzip_buffers 4 8k;         gzip_comp_level 2;        #大小超过50k的进行压缩         gzip_min_length 50k;         gzip_proxied off;         gzip_types text/javascript application/xml;         gzip_vary off;           location /         {             index index.html index.htm;             #存放目录             root /u01/up2/bootstrap-3.3.5/docs;         }     }     ...


    因为gzip_types默认包含文本/html。根据server1.domain.com大于20k的文件启用压缩;仅对server2.domain.com大于50K的文件启用压缩。index.html是25.6k,所以server1.domain.com满足压缩条件,而server2.domain.com不压缩。



    5.gzip_proxied参数

    Gzip_proxied
    语法:gzip_proxied[off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any]…

    默认值:gzip_proxied
    作用域:http,server,location

    nginx作为反向代理时,启用、打开或关闭后端服务器返回的结果。匹配的前提是后端服务器必须返回包含“Via”的头。

    Off–关闭所有代理结果数据的压缩
    Expired–启用压缩。如果标头包含“Expires”标头信息
    no-Cache–启用压缩,如果标头包含“Cache-Control:no-cache”标头信息
    no-store–启用压缩,如果标头包含“Cache-Control:no-store”标头信息
    private–启用压缩,如果标头包含“Cache-Control:private”标头信息
    no_Last_Modified–启用压缩,如果标头不包含“Last-Modified”标头信息
    no_ETag–启用压缩


    5.1测试配置文件

      server {         listen 80;         gzip on;         gzip_buffers 4 8k;         gzip_comp_level 2;         gzip_proxied no_etag;         gzip_vary off;         add_header X-Via $server_addr;         location /proxytest         {           proxy_pass http://localhost:8000/;         }          }     server {         listen 8000;         #server_name server1.domain.com;         access_log logs/server1.access.log main;         location /         {             index index.html index.htm;                        root /u01/up1/bootstrap-3.3.5/docs;         }        location ~ \.css$ {           etag off;           root /u01/up1/bootstrap-3.3.5/docs;        }     }

    配置:gzip_proxiedno_etag如果标题不包含“ETag”标题信息,则启用压缩。

    请访问http://192.168.163.146/proxytest/dist/CSS/bootstrap.min.CSS

    ETag标记关闭,并且满足启用压缩的条件。但是,它不会被压缩。这个实验结果让我有点疑惑。如果有熟悉nginx的朋友,请给点意见。

    欢迎分享,转载请注明来源:内存溢出

    原文地址:https://54852.com/zz/778421.html

    (0)
    打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
    上一篇 2022-05-03
    下一篇2022-05-03

    发表评论

    登录后才能评论

    评论列表(0条)

      保存