AppFuse中经过分析使用了大量的开源框架和组件。个人认为整个后台还不是强大,可能与它的定位有关联。我们在项目中积累了大量的Spring以及Hibernate应用都要比之要强很多。但appFuse的前台整合还是相当不错的。先学一个gzipFilter
gzipFilter其实就位于eHcache里面,他是将response中的东东都压缩一下,这个可大大减少了传输时间。
配置web.xml

Java代码  
  1. <filter>
  2. <filter-name>gzipFilter</filter-name>
  3. <filter-class>
  4. net.sf.ehcache.constructs.web.filter.GzipFilter
  5. </filter-class>
  6. </filter>
  7. <filter-mapping>
  8. <filter-name>gzipFilter</filter-name>
  9. <url-pattern>*.css</url-pattern>
  10. </filter-mapping>
  11. <filter-mapping>
  12. <filter-name>gzipFilter</filter-name>
  13. <url-pattern>*.png</url-pattern>
  14. </filter-mapping>
  15. <filter-mapping>
  16. <filter-name>gzipFilter</filter-name>
  17. <url-pattern>*.gif</url-pattern>
  18. </filter-mapping>
  19. <filter-mapping>
  20. <filter-name>gzipFilter</filter-name>
  21. <url-pattern>*.html</url-pattern>
  22. </filter-mapping>
  23. <filter-mapping>
  24. <filter-name>gzipFilter</filter-name>
  25. <url-pattern>*.jsp</url-pattern>
  26. </filter-mapping>
  27. <filter-mapping>
  28. <filter-name>gzipFilter</filter-name>
  29. <url-pattern>*.js</url-pattern>
  30. </filter-mapping>
  31. <filter-mapping>
  32. <filter-name>gzipFilter</filter-name>
  33. <url-pattern>*.json</url-pattern>
  34. </filter-mapping>
<filter><filter-name>gzipFilter</filter-name><filter-class>net.sf.ehcache.constructs.web.filter.GzipFilter</filter-class></filter>
<filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.css</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.png</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.gif</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.html</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.jsp</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.js</url-pattern></filter-mapping><filter-mapping><filter-name>gzipFilter</filter-name><url-pattern>*.json</url-pattern></filter-mapping>

效果,你可以用FoxFire的net看各个css,js文件可是压缩50%以上哦。
写了一个jsp文件专门评估

Java代码  
  1. <%@ page language="java" import="java.util.*,java.net.*,java.io.*"
  2. pageEncoding="ISO-8859-1"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme() + "://"
  6. + request.getServerName() + ":" + request.getServerPort()
  7. + path + "/";
  8. %>
  9. <%
  10. String url = request.getParameter("url");
  11. if (url != null) {
  12. URL noCompress = new URL(url);
  13. HttpURLConnection huc = (HttpURLConnection) noCompress
  14. .openConnection();
  15. huc.setRequestProperty("user-agent", "Mozilla(MSIE)");
  16. huc.connect();
  17. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  18. InputStream is = huc.getInputStream();
  19. while (is.read() != -1) {
  20. baos.write((byte) is.read());
  21. }
  22. byte[] b1 = baos.toByteArray();
  23. URL compress = new URL(url);
  24. HttpURLConnection hucCompress = (HttpURLConnection) noCompress
  25. .openConnection();
  26. hucCompress.setRequestProperty("accept-encoding", "gzip");
  27. hucCompress.setRequestProperty("user-agent", "Mozilla(MSIE)");
  28. hucCompress.connect();
  29. ByteArrayOutputStream baosCompress = new ByteArrayOutputStream();
  30. InputStream isCompress = hucCompress.getInputStream();
  31. while (isCompress.read() != -1) {
  32. baosCompress.write((byte) isCompress.read());
  33. }
  34. byte[] b2 = baosCompress.toByteArray();
  35. request.setAttribute("t1", new Integer(b1.length));
  36. request.setAttribute("t2", new Integer(b2.length));
  37. request.setAttribute("t3", (1 - new Double(b2.length)
  38. / new Double(b1.length)) * 100);
  39. }
  40. request.setAttribute("url", url);
  41. %>
  42. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  43. <html>
  44. <head>
  45. <base href="<%=basePath%>">
  46. <title>My JSP 'MyJsp.jsp' starting page</title>
  47. <meta http-equiv="pragma" content="no-cache">
  48. <meta http-equiv="cache-control" content="no-cache">
  49. <meta http-equiv="expires" content="0">
  50. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  51. <meta http-equiv="description" content="This is my page">
  52. <!--
  53. <link rel="stylesheet" type="text/css" href="styles.css">
  54. -->
  55. </head>
  56. <body>
  57. This is my JSP page.
  58. <br>
  59. <h1>
  60. Compression Test
  61. </h1>
  62. Enter a URL to test.
  63. <form method="POST">
  64. <input name="url" size="50">
  65. <input type="submit" value="Check URL">
  66. </form>
  67. <p>
  68. <%=url%>
  69. <b>Testing: ${url}</b>
  70. </p>
  71. Request 1: ${t1} bytes
  72. <%=request.getAttribute("t1")%>
  73. <br />
  74. Request 2: ${t2} bytes
  75. <%=request.getAttribute("t2")%>
  76. <br />
  77. Space saved: ${t1-t2} bytes or ${(1-t2/t1)*100}%
  78. <%=request.getAttribute("t3")%>%
  79. <br />
  80. </body>
  81. </html>

Appfuse2学习笔记--GzipFilter的应用相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. mysql数据去重语句_数据库 mysql 语句
  2. html中列表的嵌套
  3. 软件工程——求二维数组所有子矩阵的和的最大值
  4. Kafka 为什么那么快的 6 个原因!
  5. 【Tiny4412】制作最小文件系统脚本
  6. uedit富文本编辑器
  7. aix系统服务器日志外发,AIX系统主机日志收集方式.docx
  8. sympy科学计算器
  9. 代码调试技巧小集合(C语言描述,但C/C++/Pascal通用)
  10. Ubuntu下将dmg文件转换成dcr和ISO文件
  11. 开发手机游戏的步骤是怎样的?
  12. 利用原生JavaScript--实现小球无限转圈
  13. python 共享内存 c_python共享内存 - DK's Blog - 博客园
  14. GPU-CUDA编程学习(四)-共享内存
  15. 《叶圣陶语文教育论集》的阅读笔记和读后感3400字
  16. 【知识】快乐物质:多巴胺和内啡肽(内酚酞)的区别
  17. IOS 发布被拒 PLA 1.2问题 整个过程介绍 02 个人账户升级公司账户
  18. openwrt移植到pb44---第一章(使用chaos_calmer)
  19. [2020-07]百度广告搜索词获取最新办法
  20. 亲爱的老狼-html的格式含义全面说明

热门文章

  1. android AVB2.0(四)libavb库介绍
  2. 操作系统之进程管理:10、信号量机制(整形、记录型)
  3. (王道408考研操作系统)第三章内存管理-第一节2:内存管理的基本概念
  4. 程序是怎样跑起来的:第一章-对程序员来说CPU是什么
  5. Java 网络实例二(查看主机指定文件的最后修改时间、Socket实现多线程服务器程序、Socket连接到指定主机、网页抓取)
  6. Linux系统编程:lseek扩展文件大小失败原因分析
  7. Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
  8. qdu-凑数题(01背包)
  9. 关于Spring MVC 中地址栏访问 /WEB-INF下的.jsp
  10. Python sqlalchemy orm 多对多外键关联