zoukankan      html  css  js  c++  java
  • 给Tomcat,Apache配置gzip压缩(HTTP压缩)功能

    背景:
    HTTP 压缩可以大大提高 浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程 HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人

    一,对于Tomcat5.0以后的版本是支持对输出内容进行压缩的. 使用的是gzip压缩格式

    下面是tomcat5.5.20 中的$tomcat_home$/conf/server.xml的原内容

     1        < Connector  port ="80"  maxHttpHeaderSize ="8192"
     2                 maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75"
     3                 enableLookups ="false"  redirectPort ="8443"  acceptCount ="100"
     4                 connectionTimeout ="20000"  disableUploadTimeout ="true"  URIEncoding ="utf-8"   />
     5       <!--  Note : To disable connection timeouts, set connectionTimeout value
     6       to 0  -->
     7      
     8       <!--  Note : To use gzip compression you could set the following properties :
     9      
    10                 compression="on" 
    11                 compressionMinSize="2048" 
    12                 noCompressionUserAgents="gozilla, traviata" 
    13                 compressableMimeType="text/html,text/xml"
    14       -->

    从上面的第8行 内容可以看出,要使用gzip压缩功能,你可以在Connector实例中加上如下属性即可
    1) compression="on" 打开压缩功能
    2) compressionMinSize="2048" 启用压缩的输出内容大小,这里面默认为2KB
    3) noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩 
    4) compressableMimeType="text/html,text/xml" 压缩类型

    我这里的配置内容为:

     1      < Connector  port ="80"  maxHttpHeaderSize ="8192"
     2                maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75"
     3                enableLookups ="false"  redirectPort ="8443"  acceptCount ="100"
     4                connectionTimeout ="20000"  disableUploadTimeout ="true"  URIEncoding ="utf-8"
     5                   compression ="on"  
     6                compressionMinSize ="2048"  
     7                noCompressionUserAgents ="gozilla, traviata"  
     8                compressableMimeType ="text/html,text/xml,text/javascript,text/css,text/plain"    />
     9      <!--  Note : To disable connection timeouts, set connectionTimeout value
    10      to 0  -->
    11     
    12      <!--  Note : To use gzip compression you could set the following properties :
    13     
    14                compression="on" 
    15                compressionMinSize="2048" 
    16                noCompressionUserAgents="gozilla, traviata" 
    17                compressableMimeType="text/html,text/xml"
    18      -->
    19


    二,对于Apache而言,有两种情况
       
    1)针对Apache2.0之前的版本,它原本是不支持的,不过可以通过添加第三方的module_gzip模块来启用
       2)针对Apache2.0及之后的版本,Apache提供支持, 不过不叫gzip,而叫mod_deflate
    下面就对Apache2.0及之后的版本作一个说明
    1) 去掉#LoadModule headers_module modules/mod_headers.so前面的注释#,
    2) 添加LoadModule deflate_module modules/mod_deflate.so
    3) 在VirtualHost中添加

    1      < Location  "/" >
    2         SetOutputFilter DEFLATE
    3         BrowserMatch ^Mozilla/4 gzip-only-text/html
    4         BrowserMatch ^Mozilla/4\.0[678] no-gzip
    5         BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    6         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    7         Header append Vary User-Agent env=!dont-vary
    8      </ Location >
    9


    我这里面有一个完整的演示

     1 # 加载deflate模块
     2 LoadModule headers_module modules/mod_headers.so
     3 LoadModule deflate_module modules/mod_deflate.so
     4 < VirtualHost  *:80 >
     5     DocumentRoot f:/apacheTest
     6      < Location  "/" >
     7         SetOutputFilter DEFLATE
     8         BrowserMatch ^Mozilla/4 gzip-only-text/html
     9         BrowserMatch ^Mozilla/4\.0[678] no-gzip
    10         BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    11         SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    12         Header append Vary User-Agent env=!dont-vary
    13      </ Location >
    14 </ VirtualHost >

    手机扫一扫,欢迎关注公众号

    关注程序员成长

    成长的乐趣,在于分享!
    大龄程序员,一路走来,感慨颇多。闲暇时写写字,希望能给同行人一点帮助。
    本文版权归作者growithus和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    【刷题】Linux修改权限命令
    【刷题】Linux进程通信方式
    【刷题】网络:TCP与UDP
    【刷题】SQL基本操作
    【刷题】数据库三大范式
    【刷题】java会不会内存泄漏
    【刷题】Java-重写和重载
    【刷题】Java面向对象概述
    【刷题】Java垃圾回收常见问题
    测试常见问题合集
  • 原文地址:https://www.cnblogs.com/growithus/p/11012344.html
Copyright © 2011-2022 走看看