tomcat的压缩优化就是将返回的html页面等内容经过压缩,压缩成gzip格式之后,发送给浏览器,浏览器在本地解压缩的过程。
对于页面量信息大或者带宽小的情况下用压缩方式还是蛮适用的。
开启tomcat进行压缩的设置
将
1
2
3
4
|
< Connector port = "8080" protocol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" /> |
设置为:
1
2
3
4
5
6
7
8
9
|
< Connector port = "8080" protocol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" compression = "on" compressionMinSize = "2048" noCompressionUserAgents = "gozilla,traviata" compressableMimeType = "text/html,text/xml,text/css,application/javascript,text/plain" /> |
●compression="on" 打开压缩功能
●compressionMinSize="2048"启用压缩的输出内容大小,默认为2KB
●noCompressionUserAgents="gozilla,traviata" 对于以下的浏览器,不启用压缩
●compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" 哪些资源类型需要压缩
效果:
没有开启压缩的情况下 http://localhost/docs/
13605字节
开启之后
访问 http://localhost/docs/ 4244字节
过程:
①浏览器第一次请求tomcat服务器某资源
②tomcat查询到该资源,并将该资源最后修改的时间保存在响应头的Last-Modified中 (Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT)
③浏览器第二次访问tomcat请求该资源,并将之前该资源的最后修改时间放入If-Modified-Since请求头中
④服务器收到该请求,比较该请求中的If-Modified-Since与资源最后修改时间Last-Modified是否一致,如果一致则不向其发送该资源并向其发送响应代码304告诉其去本地取缓存。
(Last-Modified与If-Modified-Since只能将修改时间精确到秒,Etag与If-None-Match 将修改时间精确到秒)
* ETag: W/"13397-1184876416000" tomcat生成Etag 13397文件大小
* 客户端下次请求时通过If-None-Match 携带刚刚 Etag信息
在response设置头文件(三句话都设置,防止浏览器的兼容问题)
Expires: -1
Cache-Control: no-cache
Pragma: no-cache
* 对于动态程序,经常修改, 禁止浏览器缓存内容
原文地址:http://blog.csdn.net/kingherooo/article/details/38870625