nginx静态压缩
介绍
http_gzip_static_module - 预读gzip功能
nginx实现静态压缩这种做法其实就像apache gzip压缩 ,这种压缩是我们常见的一些事情了 , 它的功能就是: 比如我们要读取1.html文件,它会在家目录里面先去找1.html.zg这个文件是否存在,因为1.html.zg这个文件是gzip的预压缩文件,如果有的话直接返回1.html.zg这个文件,没有过没有的话返回1.html , 所以它是先去磁盘目录找同名的.gz文件是否存在,相比gzip节省了gzip压缩时间和对于CPU处理压缩的性能损耗,但是它对硬盘有要求,因为需要预先把文件进行压缩(生产环境压缩文件时建议保留原文件,相当于备份)
http_gunzip_module - 应用支持gunzip的压缩方式
这个模块一般用的很少很少,它是为了解决很少的一部分浏览器无法支持gzip压缩文件而需要用到的,如果有部分浏览器没法用gzip压缩文件的话就要用gunzip这种方式来解决问题,但是现实场景很少有用到
示例
1.开启nginx静态压缩配置
location ~ .*\.(jpg|gif|png)$ {
gzip_static on;
gzip_proxied expired no-cache no-store private auth;
root /opt/app/image;
}
2.使用GZIP命令压缩指定目录下文件
[root@localhost nginx]# ls /opt/app/image
1.jpg 2.jpg
[root@localhost nginx]# gzip -r /opt/app/image/
[root@localhost nginx]# ls /opt/app/image/
1.jpg.gz 2.jpg.gz
3.现在服务器磁盘目录中已经没有1.jpg文件了 , 这里请求1.jpg实际上时是访问的1.jpg.gz
4.我们解压1.jpg.gz , 打印文件列表可以看到1.jpg.gz文件已经没有了,磁盘目录中有的是解压出来的1.jpg,再次请求1.jpg还是依然能够成功访问到1.jpg资源(这里压缩与未压缩的文件大小看不出来变化的原因是jpg本来就是一种图片压缩格式,再次压缩也只有这个样子,如果是文本文件使用压缩的话会很明显)
[root@localhost nginx]# gzip -d /opt/app/image/1.jpg.gz
[root@localhost nginx]# ls /opt/app/image/
1.jpg 2.jpg.gz
个人理解:
学到这里,对于nginx静态压缩的理解, 我们一些比如js,css,json,字体文件等等的静态资源文件最好的就是使用nginx静态压缩, 静态压缩 对比 gzip动态压缩 而言 , 都减少了网络传输量 , 都提高了服务器响应速度 , 但是静态压缩更是降低了cpu动态处理文件压缩时的cpu消耗.而且我们服务器在使用自动部署方案的是否,完全可以根据我们自身的需求,自动化的去完成每次静态资源更新时自动执行gzip命令去预先压缩好静态资源文件.
命令相关资料
Linux gzip命令
https://www.runoob.com/linux/linux-comm-gzip.html
网友评论