网站优化之开启tomcat的gzip压缩传输特性
本文于2015年底完成,发布在个人博客网站上。 考虑个人博客因某种原因无法修复,于是在博客园安家,之前发布的文章逐步搬迁过来。
基于tomcat 8.0.x版本的文档,可以了解到tomcat支持基于gzip实现的压缩返回数据的特性。
配置方法
最简单的配置样例如下:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
/>
关于启用gzip压缩传输特性,tomcat 8.0.x版本提供了如下几个参数:
compression,默认值为off。可能的取值有:on,启用压缩传输特性;off,关闭压缩的特性;force,表示无条件启用压缩特性;- 正整数,启用压缩传输特性,同时指定了压缩操作门限值,当传输数据量超出门限时,tomcat即对传输数据执行压缩。
当tomcat无法预先得知待传输数据的具体长度,而
compression被设置为on,则tomcat自动压缩传输数据。compressionMinSize,默认值是2048,即2KB,当传输的数据量大于2KB时,tomcat自动将待传输的数据执行压缩。compressableMimeType,默认值为text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,基本上涵盖了当前能遇到的文件类型。noCompressionUserAgents,默认值为空字符串,即不限制。tomcat将本配置的值当成正则表达式来使用,用来判定是否向特定的浏览器传输压缩数据,比如配置为"gozilla",则遇到UserAgent类型为gozilla的浏览器,则不对返回的数据执行压缩。
确认gzip已启用的方法
使用抓包工具或者浏览器的调试工具监控页面请求过程中的网络交互情况,重点检查tomcat返回浏览器的页面响应头部,可以发现gzip压缩传输启用前、后的差异。
启用前
Content-Length:1014
Content-Type:text/html;charset=UTF-8
Date:Sat, 14 Nov 2015 14:34:36 GMT
Server:Apache-Coyote/1.1
启用后
Content-Encoding:gzip
Content-Type:text/html;charset=UTF-8
Date:Sat, 14 Nov 2015 14:37:34 GMT
Server:Apache-Coyote/1.1
Transfer-Encoding:chunked
Vary:Accept-Encoding
因此使用抓包工具或者使用浏览器的调试工具观察HTTP交互数据时,如果发现响应头部的报文中带有如下三部分头部信息,基本上可以确认Web系统的tomcat已启用了gzip压缩传输的特性。
Content-Encoding:gzipTransfer-Encoding:chunkedVary:Accept-Encoding
注意事项
依据官方文档,当用户选择的
Connector支持sendfile特性时,如传输数据大于48KB,则优先使用sendfile特性来传输数据,并不会对待传输的数据执行压缩操作。如果需要对大于48KB的数据执行压缩操作,依据官方文档,有两种选择:
- 配置
useSendfile为false,则不会启用sendfile特性。 - 调整启用
sendfile的门限值,修改${CATALINA_BASE}/conf/web.xml中DefaultServlet的配置项sendfileSize的取值,比如修改为96,则表明当待传输的数据大于96KB时,使用sendfile特性,低于96KB的数据则执行压缩。
- 配置
压缩传输可以有效降低浏览器与tomcat之间传输的数据量,但天下没有免费的午餐,启用压缩特性后,虽说减少了传输数据量,但却提升了浏览器和Web服务器的CPU占用率,因此不能为了追求压缩率,而将
compressionMinSize配置为过小的值。
参考资料
- Apache Tomcat 8 Configuration Reference: Overview
- Apache Tomcat 8 Configuration Reference: The HTTP Connector
- sendfile
- linux的sendfile()系统调用
网站优化之开启tomcat的gzip压缩传输特性的更多相关文章
- 网站访问优化(二):开启apache服务器gzip压缩
昨天,把带宽从1M升级到2M,使用cdn版本的jquery之后,网站访问速度由平均5s(在禁止缓存的情况下,使用缓存大概在2.8s)下降到2.8s的样子. 今天,继续优化. 第1步: 把图片进行了 ...
- tomcat 启用Gzip 压缩进行优化
打开conf/server.xml文件可以看到: <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Con ...
- Tomcat启用GZIP压缩,提升web性能
一.前言 最近做了个项目,遇到这么一个问题:服务器返回给客户端的json数据量太大(大概65M),在客户端加载了1分多钟才渲染完毕,费时耗流量,用户体验极其不好.后来网上搜优化的方法,就是Http压缩 ...
- 开启Nginx的gzip压缩功能详解
默认情况下,Nginx的gzip压缩是关闭的, gzip压缩功能就是可以让你节省不少带宽,但是会增加服务器CPU的开销哦,Nginx默认只对text/html进行压缩 ,如果要对html之外的内容进行 ...
- PhpStudy如何开启Apache的gzip压缩功能?
要让apache支持gzip功能,要用到deflate_Module和headers_Module. 打开apache的配置文件httpd.conf,大约在105行左右,找到以下两行内容:(这两行不是 ...
- 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度<转>
为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能.加载图片的速度快了很多. 通过站长 ...
- Tomcat启用Gzip压缩
原理简介 HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并 浏览.相对于普通的 ...
- Tomcat配置gzip压缩
HTTP 压缩能够大大提高浏览站点的速度,它的原理是,在client请求网 页后,从server端将网页文件压缩,再下载到client,由client的浏览器负责解 压缩并浏览.相对于普通的浏览过程H ...
- tomcat中gzip压缩
在tomcat中压缩文件,修改server.xml文件中的配置 <Connector port="8080" protocol="HTTP/1.1" co ...
- 给自己网站配置 https,http2 ,gzip压缩
https 需要购买域名ssl证书 注意事项: 1.要开启HTTP/2协议支持,需要在nginx 1.10以上版本并且需要openssl库的版本在1.0.2及以上编译. 2.http2.0只支持开启了 ...
随机推荐
- Django之第三方平台QQ授权登录的实现
接入指南:https://wiki.connect.qq.com/成为开发者 准备工作 成为开发者 首先要有一个开发者账号,https://connect.qq.com/ 登录后点击用户头像,修改个人 ...
- 【Azure Developer】use @azure/arm-monitor sdk 遇见 ManagedIdentityCredential authentication failed.(status code 500)
问题描述 在使用 @azure/arm-monitor sdk 创建 MonitorClient对象时候,遇见错误 ManagedIdentityCredential authentication f ...
- AIGC下一步:如何用AI再度重构或优化媒体处理?
让媒资中"沉默的大多数"再次焕发光彩. 邹娟|演讲者 编者按 AIGC时代下,媒体内容生产领域随着AI的出现也涌现出更多的变化与挑战.面对AI的巨大冲击,如何优化或重构媒体内容生产 ...
- Java 多线程------解决 实现继承 Thread类 方式线程的线程安全问题 方式二:同步方法
1 package bytezero.threadsynchronization; 2 3 4 5 /** 6 * 使用同步方法解决实现 继承 Thread类 的线程安全问题 7 * 8 * 9 * ...
- 10、zookeeper的leader选举
leader选举 服务器状态 looking:寻找leader状态.当服务器处于该状态时,它会认为当前集群中没有leader,因此需要进入leader选举状态 following:跟随着状态.表明当前 ...
- gRPC入门学习之旅(一)
gRpc简介 gRPC 是Google公司开发的基于HTTP/2设计,面向移动的一个高性能.开源和通用的 RPC 框架,是一款语言中立.平台中立.开源的远程过程调用(RPC)系统. gRpc官网地址: ...
- 用json画图的画图软件 推荐 Balsamiq
看这个库的时候发现的的这个软件 https://github.com/ironman1987/chinese-developer-roadmap 下载:https://www.zdfans.com/h ...
- 基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线
随着生成式人工智能 (Generative AI,GenAI) 革命的全面推进,使用 Llama 2 等开源 transformer 模型生成文本已成为新风尚.人工智能爱好者及开发人员正在寻求利用此类 ...
- 后端基础PHP—正则表达
后端基础PHP-正则表达式 1.正则表达式的介绍 2.正则表达式的语法 一.正则表达式的介绍 正则表达式的介绍 · 正则表达式,又称规则表达式,通过一种特殊的语言来挑选符合条件的数据 · 在代码中简写 ...
- 29_SDL多线程与锁机制
目录 一.简介 二.代码实现: 2.1.声明 2.2.创建锁.消费者 2.3.销毁 2.4.实现生产者逻辑 2.5.实现销毁者逻辑 2.6.创建生产者 三.分装SDL锁机制 condmutex.h c ...