在tomcat中配置gzip的方法


在tomcat中配置gzip的方法是在conf/server.xml文件中把以前的配置修改成

 

Java代码   收藏代码
  1. <Connector  
  2.            port="8080"       maxHttpHeaderSize="8192"  
  3.            maxThreads="150" minSpareThreads="25" maxSpareThreads="75"  
  4.            enableLookups="false" redirectPort="8443" acceptCount="100"  
  5.            connectionTimeout="20000" disableUploadTimeout="true"  
  6.   compression="on"   
  7.            compressionMinSize="2048"   
  8.            noCompressionUserAgents="gozilla, traviata"   
  9.            compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  />   
  10.   
  11.   />  

 

经测试在没有压缩之前的大小为1.5M 在压过之后只有10K,可能是和有很多重复数据有关,响应速度也有以前的2.5秒到275ms

 

配置后的头文件你会发现成这样了

Html代码   收藏代码
  1. 响应头信息  
  2. Server  Apache-Coyote/1.1  
  3. Set-Cookie  JSESSIONID=072D9B189C4AA9DA4D4AD0B6C2C89E50Path=/test  
  4. Content-Type    text/html;charset=ISO-8859-1  
  5. Transfer-Encoding   chunked  
  6. Content-Encoding    gzip  
  7. Vary    Accept-Encoding  
  8. Date    Mon, 04 Jan 2010 04:49:38 GMT  
  9. 请求头信息  
  10. Host    localhost:8080  
  11. User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6  
  12. Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
  13. Accept-Language zh-cn,zh;q=0.5  
  14. Accept-Encoding gzip,deflate  
  15. Accept-Charset  GB2312,utf-8;q=0.7,*;q=0.7  
  16. Keep-Alive  300  
  17. Connection  keep-alive  
  18. Cookie  JSESSIONID=1C8DB59AC74495495ED374B13C3D930A  
  19. Cache-Control   max-age=0  

 没有配之前为

Html代码   收藏代码
  1. 响应头信息  
  2. Server  Apache-Coyote/1.1  
  3. Content-Type    text/html;charset=ISO-8859-1  
  4. Transfer-Encoding   chunked  
  5. Date    Mon, 04 Jan 2010 04:54:00 GMT  
  6. 请求头信息  
  7. Host    localhost:8080  
  8. User-Agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6  
  9. Accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
  10. Accept-Language zh-cn,zh;q=0.5  
  11. Accept-Encoding gzip,deflate  
  12. Accept-Charset  GB2312,utf-8;q=0.7,*;q=0.7  
  13. Keep-Alive  300  
  14. Connection  keep-alive  
  15. Cookie  JSESSIONID=072D9B189C4AA9DA4D4AD0B6C2C89E50  
  16. Cache-Control   max-age=0  

 

 

在jsp中默认都是使用缓存的,如果不想使用可以在jsp页面中添加

Java代码   收藏代码
  1. <%   
  2. response.setHeader("Pragma","No-cache");   
  3. response.setHeader("Cache-Control","no-cache");   
  4. response.setDateHeader("Expires"0);   
  5. %>   

 

注意,这里只是对页面不使用缓存,图片、css、js还是可以使用缓存的

如果想控制某个类型不使用缓存可以使用过滤器


package com.akazam.common.webframe;


import javax.servlet.Filter;
import java.io.*;  
import java.util.*;  
import javax.servlet.*;  
import javax.servlet.http.*;  


public class BusiCacheFilter implements Filter {
private FilterConfig config = null;
private HashMap expiresMap = new HashMap();


public void init(FilterConfig filterConfig) {
this.config = filterConfig;
expiresMap.clear();
Enumeration names = config.getInitParameterNames();
while (names.hasMoreElements()) {
try {
String name = (String) names.nextElement();
String value = config.getInitParameter(name);
Integer expire = Integer.valueOf(value);
expiresMap.put(name, expire);
} catch (Exception ex) {
}
}
}


public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;


String uri = req.getRequestURI();
String ext = null;
int dot = uri.lastIndexOf(".");
if (dot != -1) {
ext = uri.substring(dot + 1);
}


setResponseHeader(res, uri, ext);
chain.doFilter(request, response);
}


public void destroy() {
}


protected FilterConfig getFilterConfig() {
return (config);
}


private void setResponseHeader(HttpServletResponse response, String uri,
String ext) {
if (ext != null && ext.length() > 0) {
Integer expires = (Integer) expiresMap.get(ext);
if (expires != null) {
AbstractConstant.getLogger().info(uri + ".Expires: " + expires.intValue());
if (expires.intValue() > 0) {
response.setHeader("Cache-Control", "max-age="
+ expires.intValue()); // HTTP 1.1
} else {
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache"); // HTTP 1.0
response.setDateHeader("Expires", 0);
}
}
}
}
}


web.xml


<filter>  
<filter-name>busicachefilter</filter-name>  
<filter-class>com.akazam.common.webframe.BusiCacheFilter</filter-class>  
<init-param>  
 <param-name>js</param-name>  
 <param-value>604800</param-value>  
</init-param>  
<init-param>  
 <param-name>gif</param-name>  
 <param-value>604800</param-value>  
</init-param>  
<init-param>  
 <param-name>jpg</param-name>  
 <param-value>604800</param-value>  
</init-param>  
<init-param>  
 <param-name>png</param-name>  
 <param-value>604800</param-value>  
</init-param>  
<init-param>  
 <param-name>css</param-name>  
 <param-value>604800</param-value>  
</init-param>  
 </filter>  
 <filter-mapping>  
<filter-name>busicachefilter</filter-name>  
<url-pattern>*.js</url-pattern>  
 </filter-mapping>  
 <filter-mapping>  
<filter-name>busicachefilter</filter-name>  
<url-pattern>*.gif</url-pattern>  
 </filter-mapping>  
 <filter-mapping>  
<filter-name>busicachefilter</filter-name>  
<url-pattern>*.jpg</url-pattern>  
 </filter-mapping>  
 <filter-mapping>  
<filter-name>busicachefilter</filter-name>  
<url-pattern>*.css</url-pattern>  
 </filter-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值