zoukankan      html  css  js  c++  java
  • 配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()
      {
      }
    }

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

  • 相关阅读:
    PyQt作品 – PingTester – 多点Ping测试工具
    关于和技术人员交流的一二三
    Pyjamas Python Javascript Compiler, Desktop Widget Set and RIA Web Framework
    Hybrid Qt applications with PySide and Django
    pyjamas build AJAX apps in Python (like Google did for Java)
    PyQt 维基百科,自由的百科全书
    InfoQ:请问为什么仍要选择Java来处理后端的工作?
    Eric+PyQt打造完美的Python集成开发环境
    python select module select method introduce
    GUI Programming with Python: QT Edition
  • 原文地址:https://www.cnblogs.com/liuyk-code/p/6672463.html
Copyright © 2011-2022 走看看