`
zhangdaiscott
  • 浏览: 429081 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8fb25857-16b4-3681-ab5e-e319f45c42a8
Jeecg快速开发平台
浏览量:0
文章分类
社区版块
存档分类

Easyui 页面访问慢解决方案,GZIP网站压缩加速优化

阅读更多

1. 静态资源压缩
GZIP是网站压缩加速的一种技术,对于开启后可以加快我们网站的打开速度,原理是经过服务器压缩,客户端浏览器快速解压的原理,可以大大减少了网站的流量。
具体代码可以参加jeecg快速开发平台的实现;

通过资源压缩拦截器,减少带宽访问

参考代码:

 

[html] view plaincopy在CODE上查看代码片派生到我的代码片
  1. /**  
  2.  * JS缓存压缩  
  3.  * JEECG开源社区  
  4.  * 论坛:www.jeecg.org  
  5.  * @author  张代浩  
  6.  */  
  7. public class GZipFilter implements Filter {  
  8.   
  9.       
  10.     public void destroy() {  
  11.     }  
  12.       /**  
  13.        * 判断浏览器是否支持GZIP  
  14.        * @param request  
  15.        * @return  
  16.        */  
  17.       private static boolean isGZipEncoding(HttpServletRequest request){  
  18.         boolean flag=false;  
  19.         String encoding=request.getHeader("Accept-Encoding");  
  20.           //update-begin--Author:JueYue  Date:20140518 for:IE下Excel上传encode为空的bug--------------------  
  21.         if(encoding!=null&&encoding.indexOf("gzip")!=-1){  
  22.           flag=true;  
  23.         }  
  24.           //update-end--Author:JueYue  Date:20140518 for:IE下Excel上传encode为空的bug--------------------  
  25.          return flag;  
  26.       }  
  27.         
  28.     public void doFilter(ServletRequest request, ServletResponse response,  
  29.             FilterChain chain) throws IOException, ServletException {  
  30.         HttpServletResponse resp = (HttpServletResponse) response;  
  31.         HttpServletRequest req=(HttpServletRequest)request;  
  32.         if(isGZipEncoding(req)){  
  33.             Wrapper wrapper = new Wrapper(resp);  
  34.             chain.doFilter(request, wrapper);  
  35.             byte[] gzipData = gzip(wrapper.getResponseData());  
  36.             resp.addHeader("Content-Encoding", "gzip");  
  37.             resp.setContentLength(gzipData.length);  
  38.             //静态资源文件缓存机制  
  39.             //CacheResource(request, response, chain);  
  40.             ServletOutputStream output = response.getOutputStream();  
  41.             output.write(gzipData);  
  42.             output.flush();  
  43.         } else {  
  44.             chain.doFilter(request, response);  
  45.         }          
  46.   
  47.     }  
  48.   
  49.     public void init(FilterConfig filterConfig) throws ServletException {}  
  50.       
  51.     /**  
  52.      * 提高系统访问性能,主键缓存  
  53.      */  
  54.     public void CacheResource(ServletRequest request, ServletResponse response,  
  55.             FilterChain chain){  
  56.         //1.强转httpservlet,方便调用方法     
  57.         HttpServletRequest req = (HttpServletRequest) request;    
  58.         HttpServletResponse res = (HttpServletResponse) response;    
  59.         //2.获取资源文件名的URI     
  60.         String uri = req.getRequestURI();    
  61.         //3.获得文件扩展名,lastIndexOf(".")+1 获得.最后一次出现的索引的后一位:jpg     
  62.         uri = uri.substring(uri.lastIndexOf(".")+1);    
  63.         System.out.println( uri );//测试获取后缀是否正确     
  64.         //4断相应后缀文件,设定缓存时间     
  65.         long date = 0;    
  66.         //System.out.println( new Date().getTime());//测试当前时间用     
  67.             
  68.         //判断URI获取的后缀名是否与JPG相等,不考虑大小写     
  69.         if(uri.equalsIgnoreCase("jpg")){    
  70.             //读取XML里的JPG配置的参数,这里设定了时间     
  71.             //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒     
  72.             date = System.currentTimeMillis()+5*60*60*1000;    
  73.         }    
  74.             
  75.         if(uri.equalsIgnoreCase("gif")){    
  76.             //读取XML里的JPG配置的参数,这里设定了时间     
  77.             //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒     
  78.             date = System.currentTimeMillis()+5*60*60*1000;    
  79.         }    
  80.             
  81.         if(uri.equalsIgnoreCase("css")){    
  82.             //读取XML里的JPG配置的参数,这里设定了时间     
  83.             //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒     
  84.             date = System.currentTimeMillis()+5*60*60*1000;    
  85.         }    
  86.             
  87.         if(uri.equalsIgnoreCase("js")){    
  88.             //读取XML里的JPG配置的参数,这里设定了时间     
  89.             //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒     
  90.             date = System.currentTimeMillis()+5*60*60*1000;    
  91.         }    
  92.         //设置缓存时间     
  93.         res.setDateHeader("Expires", date);    
  94.     }  
  95.   
  96.     private byte[] gzip(byte[] data) {  
  97.         ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(10240);  
  98.         GZIPOutputStream output = null;  
  99.         try {  
  100.             output = new GZIPOutputStream(byteOutput);  
  101.             output.write(data);  
  102.         } catch (IOException e) {  
  103.         } finally {  
  104.             try {  
  105.                 output.close();  
  106.             } catch (IOException e) {  
  107.             }  
  108.         }  
  109.         return byteOutput.toByteArray();  
  110.     }  
  111.   
  112. }  

2. 静态资源缓存
3. easyui 页面优化
   http://www.easyui.info/archives/1435.html
   http://www.360doc.com/content/14/0209/08/9200790_350899585.shtml

分享到:
评论

相关推荐

    简单的easyui页面

    这个名为"简单的easyui页面"的项目提供了一个简化版的EasyUI页面,非常适合用作前台UI界面,以实现简洁、高效的用户交互体验。 EasyUI的核心特性包括组件丰富、易于使用、响应式布局以及对Bootstrap的兼容性。以下...

    jQuery.easyui优化版本,解决了页面覆盖的问题

    在标题和描述中提到的“jQuery.easyui 优化版本,解决了页面覆盖的问题”,这表明这个版本对原版 jQuery EasyUI 进行了特定的优化,特别是针对页面元素重叠或遮挡问题进行了修复。 页面覆盖问题通常发生在多个 UI ...

    EASYUI 页面框架

    EASYUI的核心理念是通过预定义的样式和组件,为开发者提供一套易于使用的UI解决方案,让开发者可以专注于业务逻辑的实现,而不是繁琐的界面设计。 EASYUI 的核心组件包括但不限于以下几点: 1. **布局(Layout)**...

    EasyUI登录页面.zip

    这个名为"EasyUI登录页面.zip"的压缩包文件包含了使用EasyUI框架构建的一个登录页面的相关资源。EasyUI框架主要基于jQuery,它提供了一系列预先设计的CSS样式和JavaScript组件,使得开发者能够快速构建出美观且功能...

    easyui在ie下的优化方案

    EasyUI 是一个基于 jQuery 的前端框架,用于快速开发界面组件。...通过这些优化方案,虽然无法完全达到现代浏览器的渲染效率,但可以在很大程度上提升 IE8 及以下版本中 EasyUI 应用的运行速度,显著改善用户体验。

    easyui页面操作

    easyui页面操作.easyui页面操作easyui页面操作.easyui页面操作.easyui页面操作

    easyui页面的例子

    总的来说,EasyUI 提供了一套完整的前端解决方案,帮助开发者快速构建功能丰富的 Web 应用程序。通过这个"easyui 页面的例子",你可以学习到如何使用 EasyUI 的各种组件,并将其应用于实际的网页设计中。实践中,...

    jquery-easyui-1.5.3源代码(未压缩)

    3. 调试与优化:通过断点、日志等手段调试代码,优化性能,解决实际问题。 4. 扩展与定制:根据项目需求,学习如何扩展EasyUI功能或自定义样式。 总结,jQuery EasyUI 1.5.3 的未压缩源代码为开发者提供了一个宝贵...

    Jquery EasyUI 页面框架Demo

    这个"Jquery EasyUI 页面框架Demo"包含了四个示例,将帮助我们更好地理解和运用EasyUI来设计页面布局。 首先,我们要了解EasyUI的核心概念。EasyUI的核心是其组件库,包括窗口(window)、表格(datagrid)、面板...

    基于EasyUI的登录页面

    本项目"基于EasyUI的登录页面"就是利用EasyUI来创建一个功能完备、易于拓展的登录界面。 首先,EasyUI的核心理念是“简单易用”。它为开发者提供了大量的预定义样式和插件,如表格、下拉菜单、按钮、对话框等,大大...

    easyui页面

    easyui页面模板,上传后以便自己日后查看参考

    Easyui 未压缩版

    Easyui 未压缩版, 学习Easyui,深入理解,扩展,修改Easyui插件必备

    easyui页面布局示例

    在“easyui页面布局示例”中,我们将探讨如何利用 EasyUI 实现高效且直观的页面布局,并结合导航菜单,实现动态内容加载。 首先,EasyUI 提供了多种布局模式,如网格布局(grid layout)、面板布局(panel layout)...

    easyui iframe 页面重复加载的问题

    在使用easyui框架开发Web应用时,特别是在使用tab布局的...以上就是对于easyui中iframe页面重复加载问题的分析及其解决方案的详细说明。在实际开发中,应合理运用这一技术细节,以达到更好的用户交互体验和系统性能。

    easyUi弹出window窗口传值与调用父页面的方法,子页面给父页面赋值

    在EasyUI中,我们可能会遇到需要在弹出窗口(子页面)与父页面之间进行数据传递或调用父页面方法的需求。下面将详细讲解这个过程。 首先,让我们理解标题中的“弹出window窗口传值”。在EasyUI中,创建一个弹出窗口...

    easyui的登录页面

    这个登录页面是许多 web 应用程序的基础部分,它允许用户输入凭据并访问受保护的内容。 首先,EasyUI 登录页面通常包含以下几个核心元素: 1. **布局(Layout)**:EasyUI 提供了灵活的布局管理,用于创建页面的...

    jquery-easyui-1.3.3源码 未压缩

    《jQuery EasyUI 1.3.3 源码解析与学习指南》 ...通过深入研究源码,不仅可以提升JavaScript和前端开发技能,还能为实际项目带来更高效、更个性化的解决方案。无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。

    easyui datagrid 大数据加载效率慢,优化解决方法(推荐)

    本文主要探讨如何针对EasyUI datagrid进行性能优化,以解决大数据量加载慢的问题。 首先,我们需要理解问题的根源。当datagrid加载大量数据时,如果未进行优化,其内部的某些功能,如行高自动调整,可能导致性能...

    easyUI页面datagrid动态列和form字段动态添加

    easyUI页面datagrid动态列和form字段动态添加;项目开发时用到的,废了不少事,大概总了一下,现在发出来共享给想我一样的要用到的菜鸟们,谢谢

    jquery easyui 未压缩源代码1.05

    《jQuery EasyUI 1.05未压缩源代码解析与应用》 jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它提供了一套完整的用户界面组件,使得开发者可以快速构建功能丰富的Web应用程序。EasyUI 的设计灵感来源于 ExtJS...

Global site tag (gtag.js) - Google Analytics