Nginx性能优化之Gzip压缩的设置方法
发布时间 - 2023-05-29 00:00:00 点击率:次nginx开启gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化nginx性能! web网站上的图片,视频等其它多媒体文件以及大文件,因为压缩效果不好,所以对于图片没有必要支压缩,如果想要优化,可以图片的生命周期设置长一点,让客户端来缓存。 开启gzip功能后,nginx服务器会根据配置的策略对发送的内容, 如css、js、xml、html等静态资源进行压缩, 使得这些内容大小减少,在用户接收到返回内容之前对其进行处理,以压缩后的数据展现给客户。这样不仅可以节约大量的出口带宽,提高传输效率,还能提升用户快的感知体验, 一举两得; 尽管会消耗一定的cpu资源,但是为了给用户更好的体验还是值得的。
使用Gzip压缩可以将页面大小缩小到原来的30%甚至更小,这样用户浏览页面的速度会更快。Gzip 的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。目前,我们不必担心浏览器的问题,因为绝大多数的浏览器都能够解析Gzip压缩过的页面。
Gzip压缩作用:将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度。Gzip压缩可以配置http,server和location模块下。Nginx开启Gzip压缩参数说明:
gzip on; #决定是否开启gzip模块,on表示开启,off表示关闭; gzip_min_length 1k; #设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k gzip_buffers 4 16k; #设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k。这里设置以16k为单位,按照原始数据大小以16k为单位的4倍申请内存 gzip_http_version 1.1; #识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码 gzip_comp_level 2; #设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu gzip_types text/plain application/x-javascript text/css application/xml; #设置需要压缩的MIME类型,非设置值不进行压缩,即匹配压缩类型 gzip_vary on; #启用应答头"Vary: Accept-Encoding" gzip_proxied off; nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"), no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含 "Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息) gzip_disable msie6; (IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库 ###################################################################################################### #如下:修改nginx配置文件 /usr/local/nginx/conf/nginx.conf [root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #将以下配置放到nginx.conf的http{ ... }区域中 #修改配置为 gzip on; #开启gzip压缩功能 gzip_min_length 10k; #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小. gzip_buffers 4 16k; #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存 gzip_http_version 1.1; #压缩版本 gzip_comp_level 2; #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6 gzip types text/css text/xml application/javascript; #制定压缩的类型,线上配置时尽可能配置多的压缩类型! gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持) gzip vary on; #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩
如下是线上常使用的Gzip压缩配置
[root@external-lb02 ~]# cat /data/nginx/conf/nginx.conf
........
http {
.......
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 9;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php application/javascript application/json;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;
}如果不开启Gzip压缩功能(即注释掉Gzip的相关配置), 查看某个图片大小
[root@external-lb02 ~]# ll -h /data/web//www/test.bmp -rw-r--r-- 1 root root 453K 3月 14 18:43 /data/web//www/test.bmp
如下可知, 文件没有被压缩,文件传输大小还是400多K
如果开启Nginx的Gzip压缩功能(即打开Gzip的相关配置), 然后再次访问test.bmp图片, 发现压缩后的该图片文件传输大小只有200多K !
通过上面测试对比, 发现Nginx开启Gzip压缩功能后, 定义的gzip type的文件在传输时的大小明显变小, 这样这会大大提高nginx访问性能.
直接用curl测试命令:
[root@fvtlb02 ~]# curl -I -H "Accept-Encoding: gzip, deflate" "http://fvtvfc-web.kevin.com/service-worker.js" HTTP/1.1 200 OK Server: nginx/1.12.2 Date: Mon, 26 Nov 2018 02:19:16 GMT Content-Type: application/javascript; charset=utf-8 Connection: keep-alive Vary: Accept-Encoding Last-Modified: Sun, 25 Nov 2018 22:28:15 GMT Vary: Accept-Encoding ETag: W/"5bfb21ff-40be" Content-Encoding: gzip
如上,response header头信息中出现"Conten_Encoding: gzip" , 就说明Nginx已开启了压缩 (在浏览器访问, 通过F12看请求的响应头部 也是一样)
Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。
1) 图片类型资源 (还有视频文件)原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。(可以试试将一张jpg图片压缩为zip,观察大小并没有多大的变化。虽然zip和gzip算法不一样,但是可以看出压缩图片的价值并不大)2) 大文件资源原因:会消耗大量的cpu资源,且不一定有明显的效果。
# nginx
# css
# html
# xml
# cURL
# JS
# location
# 算法
# http
# 性能优化
# 压缩比
# 客户端
# 线上
# 不支持
# 速度快
# 中不
# 速度慢
# 越小
# 文件传输
# 大文件
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
简单实现Android验证码
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
VIVO手机上del键无效OnKeyListener不响应的原因及解决方法
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
HTML 中动态设置元素 name 属性的正确语法详解
如何在建站之星网店版论坛获取技术支持?
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何实现数据库事务?(DB Facade示例)
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
如何利用DOS批处理实现定时关机操作详解
高端云建站费用究竟需要多少预算?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
如何在云主机快速搭建网站站点?
如何在云主机上快速搭建网站?
Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
如何在IIS7中新建站点?详细步骤解析
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
如何在IIS服务器上快速部署高效网站?
Laravel如何使用Telescope进行调试?(安装和使用教程)
中山网站推广排名,中山信息港登录入口?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
微信小程序 canvas开发实例及注意事项
如何在IIS中新建站点并配置端口与物理路径?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
香港服务器如何优化才能显著提升网站加载速度?
JavaScript如何实现类型判断_typeof和instanceof有什么区别
如何在阿里云高效完成企业建站全流程?
如何构建满足综合性能需求的优质建站方案?
Laravel如何使用查询构建器?(Query Builder高级用法)
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
JS经典正则表达式笔试题汇总
Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Python面向对象测试方法_mock解析【教程】
利用JavaScript实现拖拽改变元素大小
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
专业商城网站制作公司有哪些,pi商城官网是哪个?
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】


d off;
nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括"Expires"头信息),no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),
no-store(启用压缩,header头中包含"Cache-Control:no-store"),private(启用压缩,header头中包含"Cache-Control:private"),no_last_modefied(启用压缩,header头中不包含
"Last-Modified"),no_etag(启用压缩,如果header头中不包含"Etag"头信息),auth(启用压缩,如果header头中包含"Authorization"头信息)
gzip_disable msie6;
(IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库
######################################################################################################
#如下:修改nginx配置文件 /usr/local/nginx/conf/nginx.conf
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf #将以下配置放到nginx.conf的http{ ... }区域中
#修改配置为
gzip on; #开启gzip压缩功能
gzip_min_length 10k; #设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小.
gzip_buffers 4 16k; #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存
gzip_http_version 1.1; #压缩版本
gzip_comp_level 2; #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6
gzip types text/css text/xml application/javascript; #制定压缩的类型,线上配置时尽可能配置多的压缩类型!
gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)
gzip vary on; #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩