使用Nginx压缩文件、设置反向代理缓存提高响应速度

Gzip压缩:

最开始,这个竟然要6m多(大到不寻常),响应的速度3分多钟。

所以先对返回的文件进行gzip压缩。判断返回的资源是否有使用gzip压缩,观察响应头部里面,如果没有

Content-Encoding: gzip;这意味着文件是在没有压缩的情况下提供。

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第1张图片

在nginx.conf中进行如下配置:

http{
....
    #使用gzip压缩;
    gzip on ;

    #对大于1k的文件进行压缩;
    gzip_min_length: 1k; 

    #压缩的程度(1~10,数字越大压缩程度越大,对应消耗时间和cpu越多);
    gzip_comp_level 5;

    #对特定文件进行压缩;
    gzip_types text/plain application/javascript application/x-javascript text/css     application/xml text/javascript; 对以上文件进行压缩;
...
}

配置好后reload Nginx,再次访问

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第2张图片

从上图可以看到,压缩效果很明显,此时的vendor从原来的6mb压缩至980kb,体积小了响应时间也小了。开启的level为5,虽然越高压缩后体积就会越小,尝试将level调制9,试试压缩后体积大小:

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第3张图片

调制为9后发现体积跟之前变化不是很大(按比例来说)。再试试8

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第4张图片

查找资料发现以下回答:

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第5张图片

发现其实1,2的时候变化较大,后续的压缩体积变化不大,而且压缩程度越高,会耗费更多的cpu和时间,所以这里一般不需要设置得太高;

代理缓存:

 

文件大小得到压缩了,此时在尝试使用缓存提高一下响应时间;压缩后vendor大小在1mb左右,响应时间大概需要1min,这跟原来比虽然快了很多,但还是太慢;

在nginx.conf中添加如下配置:

http{
....
    proxy_buffering on;
    proxy_temp_path /usr/local/nginx-1.14.2/nginx-cache/temp;
    proxy_cache_path /usr/local/nginx-1.14.2/nginx-cache/cache levels=1:2 keys_zone=my-cache:100m inactive=600 max_size=2g;
....
                location /ospf/ {
......
                        proxy_cache my-cache;
                        proxy_cache_valid 200 304 301 302 8h;
                        proxy_cache_valid 404 1m;
                        proxy_cache_valid any 1d;
                        proxy_cache_key $host$uri$is_args$args;
                      ...
                }
}

 配置说明:

proxy_buffering on:代理的时候,开启缓冲后端服务器的响应;

proxy_temp_path : 缓存临时目录。后端的响应并不直接返回客户端,而是先写到一个临时文件中,然后被rename一下当做缓存放在 proxy_cache_path 。

proxy_cache_path: 设置缓存目录,目录里的文件名是cache_key 的MD5值。

levels=1:2 表示采用2级目录结构,第一层目录只有一个字符

 keys_zone=my-cache:100m Web缓存区名称为my-cache,内存缓存空间大小为100MB,这个缓冲zone可以被多次使用。

inactive=600m 表示600分钟没有被访问的内容自动清除

 max_size=2g 硬盘最大缓存空间为2GB,超过这个大小将清除最近最少使用的数据。

 

proxy_cache my-cache; 定义用于缓存的共享内存区域。

proxy_cache_valid:缓存的有效期;指定对200、301或者302有效代码缓存的时间长度。特定参数any表示对任何响应都缓存一定时间长度。

proxy_cache_key 用来区分缓存文件的key,作为缓存key的一个字符串,用于存储或者获取缓存值。默认值为$scheme$proxy_host$uri$is_args$args

然后再次访问(已访问过一次,使其有缓存文件) 

使用Nginx压缩文件、设置反向代理缓存提高响应速度_第6张图片

可以看到,开启了缓存,速度较之前又快了很多,没用缓存之前是1min,现在大约是10s的时间,其他较小的文件大部分都是ms级的响应速度。

总结:使用gzip压缩可以缩小文件体积,使用缓存可以不用直接访问源服务器,直接在Nginx代理缓存中返回资源,从而加快响应的速度,以上虽然从原来的3min到10s左右的提升,但是对应加载一个页面的速度来说还是太慢,还有一个关键的问题是如果缩小该文件的大小。

你可能感兴趣的:(使用Nginx压缩文件、设置反向代理缓存提高响应速度)