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

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

 
阅读更多


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

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

参考代码:

/**
 * JS缓存压缩
 * JEECG开源社区
 * 论坛:www.jeecg.org
 * @author  张代浩
 */
public class GZipFilter implements Filter {

	
    public void destroy() {
    }
      /**
       * 判断浏览器是否支持GZIP
       * @param request
       * @return
       */
      private static boolean isGZipEncoding(HttpServletRequest request){
        boolean flag=false;
        String encoding=request.getHeader("Accept-Encoding");
          //update-begin--Author:JueYue  Date:20140518 for:IE下Excel上传encode为空的bug--------------------
        if(encoding!=null&&encoding.indexOf("gzip")!=-1){
          flag=true;
        }
          //update-end--Author:JueYue  Date:20140518 for:IE下Excel上传encode为空的bug--------------------
         return flag;
      }
      
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        HttpServletResponse resp = (HttpServletResponse) response;
        HttpServletRequest req=(HttpServletRequest)request;
        if(isGZipEncoding(req)){
            Wrapper wrapper = new Wrapper(resp);
            chain.doFilter(request, wrapper);
            byte[] gzipData = gzip(wrapper.getResponseData());
            resp.addHeader("Content-Encoding", "gzip");
            resp.setContentLength(gzipData.length);
            //静态资源文件缓存机制
            //CacheResource(request, response, chain);
            ServletOutputStream output = response.getOutputStream();
            output.write(gzipData);
            output.flush();
        } else {
            chain.doFilter(request, response);
        }        

    }

	public void init(FilterConfig filterConfig) throws ServletException {}
    
    /**
     * 提高系统访问性能,主键缓存
     */
    public void CacheResource(ServletRequest request, ServletResponse response,
            FilterChain chain){
    	//1.强转httpservlet,方便调用方法   
        HttpServletRequest req = (HttpServletRequest) request;  
        HttpServletResponse res = (HttpServletResponse) response;  
        //2.获取资源文件名的URI   
        String uri = req.getRequestURI();  
        //3.获得文件扩展名,lastIndexOf(".")+1 获得.最后一次出现的索引的后一位:jpg   
        uri = uri.substring(uri.lastIndexOf(".")+1);  
        System.out.println( uri );//测试获取后缀是否正确   
        //4断相应后缀文件,设定缓存时间   
        long date = 0;  
        //System.out.println( new Date().getTime());//测试当前时间用   
          
        //判断URI获取的后缀名是否与JPG相等,不考虑大小写   
        if(uri.equalsIgnoreCase("jpg")){  
            //读取XML里的JPG配置的参数,这里设定了时间   
            //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒   
            date = System.currentTimeMillis()+5*60*60*1000;  
        }  
          
        if(uri.equalsIgnoreCase("gif")){  
            //读取XML里的JPG配置的参数,这里设定了时间   
            //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒   
            date = System.currentTimeMillis()+5*60*60*1000;  
        }  
          
        if(uri.equalsIgnoreCase("css")){  
            //读取XML里的JPG配置的参数,这里设定了时间   
            //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒   
            date = System.currentTimeMillis()+5*60*60*1000;  
        }  
          
        if(uri.equalsIgnoreCase("js")){  
            //读取XML里的JPG配置的参数,这里设定了时间   
            //获取当前系统时间 + 需要缓存的时间(小时),Long 防止溢出,因为单位是毫秒   
            date = System.currentTimeMillis()+5*60*60*1000;  
        }  
        //设置缓存时间   
        res.setDateHeader("Expires", date);  
    }

    private byte[] gzip(byte[] data) {
        ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(10240);
        GZIPOutputStream output = null;
        try {
            output = new GZIPOutputStream(byteOutput);
            output.write(data);
        } catch (IOException e) {
        } finally {
            try {
                output.close();
            } catch (IOException e) {
            }
        }
        return byteOutput.toByteArray();
    }

}
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