配gzip的过滤器进行压缩解决表单加载慢问题

一个客户的表单上字段超过五百,经浏览器的调试器发现主要问题是从服务器取数据花费了大量时间,下载内容大小约1.2M,下载时间在10s左右,导致样式加载完大约在17s左右(不清除浏览器缓存)。最终考虑利用gzip压缩来解决数据量大的问题。

web.xml配置过滤器:

 <filter>
    <filter-name>Compress</filter-name>
    <filter-class>weaver.filter.GZIPFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>Compress</filter-name>
    <url-pattern>*.js</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>Compress</filter-name>
    <url-pattern>*.css</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>Compress</filter-name>
    <url-pattern>*.jsp</url-pattern>
  </filter-mapping>

过滤器代码:

package weaver.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class GZIPFilter
  implements Filter
{
  public void doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain)
    throws IOException, ServletException
  {
    if ((paramServletRequest instanceof HttpServletRequest)) {
      HttpServletRequest localHttpServletRequest = (HttpServletRequest)paramServletRequest;
      HttpServletResponse localHttpServletResponse = (HttpServletResponse)paramServletResponse;
      String str = localHttpServletRequest.getHeader("accept-encoding");
      if ((str != null) && (str.indexOf("gzip") != -1))
      {
        GZIPResponseWrapper localGZIPResponseWrapper = new GZIPResponseWrapper(localHttpServletResponse);

        paramFilterChain.doFilter(paramServletRequest, localGZIPResponseWrapper);
        localGZIPResponseWrapper.finishResponse();
        return;
      }
      paramFilterChain.doFilter(paramServletRequest, paramServletResponse);
    }
  }

  public void init(FilterConfig paramFilterConfig)
  {
  }

  public void destroy()
  {
  }
}

经测试,表单速度加载提升一倍,客户表示认可。

原文地址:https://www.cnblogs.com/liuyk-code/p/6672463.html