使用gzip压缩extjs文件

 突然奇想想用extjs4做一个外网项目,但是extjs4依赖的文件实在太大,光ext-all.js已经压缩后的都有1.2m,做外网的话速度非常的慢,为了提高速度可以用gzip对文件再进行压缩,最后可以让1.2m的文件压缩成300多k,这样就大大的节省的时间。

    1:先使用gzip压缩文件(http://ishare.iask.sina.com.cn/f/15511113.html) 把gzip.exe放在一个目录下面,需要压缩的文件也要放在同目录下面,然后在cmd窗口中也要到同样的目录下面输入:“gzip 文件名” 就会把以前的文件替换成压缩后的文件,然后把后缀名修改成.gzjs

2:因为压缩过后需要浏览器来来解压,所以需要一个过滤器来添加一个头信息告诉浏览器需要解压

 

[java]   view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public class GzipFilter implements Filter {  
  2.     Map headers = new HashMap();  
  3.   
  4.     public void destroy() {  
  5.   
  6.     }  
  7.   
  8.     public void doFilter(ServletRequest req, ServletResponse res,  
  9.   
  10.     FilterChain chain) throws IOException, ServletException {  
  11.   
  12.         if (req instanceof HttpServletRequest) {  
  13.   
  14.             doFilter((HttpServletRequest) req, (HttpServletResponse) res, chain);  
  15.   
  16.         } else {  
  17.   
  18.             chain.doFilter(req, res);  
  19.   
  20.         }  
  21.   
  22.     }  
  23.   
  24.     public void doFilter(HttpServletRequest request,  
  25.   
  26.     HttpServletResponse response, FilterChain chain)  
  27.   
  28.     throws IOException, ServletException {  
  29.   
  30.         request.setCharacterEncoding("UTF-8");  
  31.   
  32.         for (Iterator it = headers.entrySet().iterator(); it.hasNext();) {  
  33.   
  34.             Map.Entry entry = (Map.Entry) it.next();  
  35.   
  36.             response.addHeader((String) entry.getKey(), (String) entry.getValue());  
  37.   
  38.         }  
  39.         chain.doFilter(request, response);  
  40.   
  41.     }  
  42.   
  43.     public void init(FilterConfig config) throws ServletException {  
  44.   
  45.         String headersStr = config.getInitParameter("headers");  
  46.   
  47.         String[] headers = headersStr.split(",");  
  48.   
  49.         for (int i = 0; i < headers.length; i++) {  
  50.   
  51.             String[] temp = headers[i].split("=");  
  52.   
  53.             this.headers.put(temp[0].trim(), temp[1].trim());  
  54.   
  55.         }  
  56.   
  57.     }  
  58. }  

配置了过滤器后需要在web.xml中配置过滤器

 

[html]   view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <filter>         
  2.     <filter-name>GzipJsFilter</filter-name>         
  3.     <filter-class>org.mango.crm.filter.GzipFilter</filter-class>         
  4.     <init-param>         
  5.         <param-name>headers</param-name>         
  6.         <param-value>Content-Encoding=gzip</param-value>         
  7.     </init-param>         
  8. </filter>         
  9. <filter-mapping>         
  10.     <filter-name>GzipJsFilter</filter-name>         
  11.     <url-pattern>*.gzjs</url-pattern>         
  12. </filter-mapping>  


最后在html文件中引用压缩后的文件

[javascript]   view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <script type="text/javascript" src="/resource/extjs/ext-all.js.gzjs"></script>  


这样就完成了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值