nginx学习之压缩解压篇(七)
1.简介
压缩响应可以减少传输数据的大小,节省带宽。但过多的压缩会造成很大的处理开销。在发送给客户端之前,nginx会对响应做压缩,但是如果后端服务器已经
压缩过了,nginx就不再压缩。
2.开启压缩
server {
gzip on;
gzip_types text/plain application/xml;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length ;
...
}
nginx默认只压缩MIME类型为text/plain的响应,使用gzip_types指定额外的压缩类型。
gzip_min_length:nginx会检查响应头中的Content-length,如果大于1000字节,就压缩,如果小于1000字节,就不压缩。
gzip_proxied:假如用户与nginx之间隔了一层代理服务器(用户的代理服务器),代理服务器发送请求到nginx,nginx将请求转发给后端服务器,后端服务器接收到响应后,不对响应做压缩,直接返回给代理服务器。通过gzip_proxied指令来配置如何对这种响应做压缩。
用户-----代理服务器----------nginx-----后端服务器
我们是根据请求中的Via头字段知道这个请求是来自代理服务器的。
gzip_proxied有多个参数,用于声明哪些类型的请求对应的响应需要压缩。
上面的例子中表示:
如果响应中的Cache-Control字段的值为:no-cache,no-store,private,就压缩这个响应,因为它不会缓存在用户的代理服务器上。
expired参数表示nginx会去检查响应中的Expired头字段。
auth参数表示nginx会去检查响应中的Authorization头字段。一个经过授权的响应是不能在代理服务器上缓存的,必须给终端用户。
配置压缩的指令可以写在http块中,可以写在server块中,可以写在location块中。
3.开启解压缩
由于有的客户端可以识别压缩的响应,有的客户端无法识别压缩的响应,所以就需要分别对待。
开启运行时解压缩,也就是在传输前进行压缩,在发送的过程中进行解压缩?
location /storage/ {
gunzip on;
...
}
注意:解压缩指令在预编译的开源的nginx中没有,它属于一个单独的模块,需要编译到nginx中去。
4.尽量发送压缩过的静态文件
location / {
gzip_static on;
}
对于请求/path/to/file,nginx会尝试先寻找/path/to/file.gz,找到后就发送出去,如果没有找到,或者客户端不支持gzip,那么就只能发送
/path/to/file了。
gzip_static的意思是提前压缩好静态文件。
注意:解压缩指令在预编译的开源的nginx中没有,它属于一个单独的模块,需要编译到nginx中去。
最新文章
- 【Hibernate框架】对象的三种持久化状态
- a标签有小手状和无小手状css属性
- ES6初学习
- CSS实现水平垂直同时居中的5种思路
- CocoaPods安装使用及上传
- 【OJ】PAT-A解题报告
- 基于ace后台管理系统模板--CMS(Thinkphp框架)的筹划
- SGU 246. Black &; White(数论)
- Spring中的WebDataBinder浅析
- 正整数从1到N,输出按照字典序排序的前K个数
- Debian 7 下载
- 关于JavaScript语法的小笔记
- c++中的namespace(附程序运行图)
- 表达式求值(二叉树方法/C++语言描述)(四)
- BZOJ_1251_序列终结者
- vue项目首屏加载优化实战
- Android开发中,使用 EditText 输入内容,如何进行一键清空内容处理
- LSC问题(不连续问题)
- zynq基础-->;linux下软件应用
- 性能测试day02_预习知识
热门文章
- 转: 初识Agile/CMMI/Scrum
- NeatBean下ssh 私钥格式问题
- [Unit Testing] Mock a Node module's dependencies using Proxyquire
- JAVA反射机制--怎么不受泛型束缚给数组赋值
- Node.js 极简入门Helloworld版服务器例子
- 【Spring】使用Filter过滤请求
- Hadoop最大值的算法中出现的错误(strToDouble)
- Android 四大组件学习之Server一
- win8硬盘安装Ubuntu14.04双系统參考教程
- storm - 经常使用命令