Appfuse2学习笔记--GzipFilter的应用

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. <%@pagelanguage="java"import="java.util.*,java.net.*,java.io.*"
  2. pageEncoding="ISO-8859-1"%>
  3. <%
  4. Stringpath=request.getContextPath();
  5. StringbasePath=request.getScheme()+"://"
  6. +request.getServerName()+":"+request.getServerPort()
  7. +path+"/";
  8. %>
  9. <%
  10. Stringurl=request.getParameter("url");
  11. if(url!=null){
  12. URLnoCompress=newURL(url);
  13. HttpURLConnectionhuc=(HttpURLConnection)noCompress
  14. .openConnection();
  15. huc.setRequestProperty("user-agent","Mozilla(MSIE)");
  16. huc.connect();
  17. ByteArrayOutputStreambaos=newByteArrayOutputStream();
  18. InputStreamis=huc.getInputStream();
  19. while(is.read()!=-1){
  20. baos.write((byte)is.read());
  21. }
  22. byte[]b1=baos.toByteArray();
  23. URLcompress=newURL(url);
  24. HttpURLConnectionhucCompress=(HttpURLConnection)noCompress
  25. .openConnection();
  26. hucCompress.setRequestProperty("accept-encoding","gzip");
  27. hucCompress.setRequestProperty("user-agent","Mozilla(MSIE)");
  28. hucCompress.connect();
  29. ByteArrayOutputStreambaosCompress=newByteArrayOutputStream();
  30. InputStreamisCompress=hucCompress.getInputStream();
  31. while(isCompress.read()!=-1){
  32. baosCompress.write((byte)isCompress.read());
  33. }
  34. byte[]b2=baosCompress.toByteArray();
  35. request.setAttribute("t1",newInteger(b1.length));
  36. request.setAttribute("t2",newInteger(b2.length));
  37. request.setAttribute("t3",(1-newDouble(b2.length)
  38. /newDouble(b1.length))*100);
  39. }
  40. request.setAttribute("url",url);
  41. %>
  42. <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
  43. <html>
  44. <head>
  45. <basehref="<%=basePath%>">
  46. <title>MyJSP'MyJsp.jsp'startingpage</title>
  47. <metahttp-equiv="pragma"content="no-cache">
  48. <metahttp-equiv="cache-control"content="no-cache">
  49. <metahttp-equiv="expires"content="0">
  50. <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
  51. <metahttp-equiv="description"content="Thisismypage">
  52. <!--
  53. <linkrel="stylesheet"type="text/css"href="styles.css">
  54. -->
  55. </head>
  56. <body>
  57. ThisismyJSPpage.
  58. <br>
  59. <h1>
  60. CompressionTest
  61. </h1>
  62. EnteraURLtotest.
  63. <formmethod="POST">
  64. <inputname="url"size="50">
  65. <inputtype="submit"value="CheckURL">
  66. </form>
  67. <p>
  68. <%=url%>
  69. <b>Testing:${url}</b>
  70. </p>
  71. Request1:${t1}bytes
  72. <%=request.getAttribute("t1")%>
  73. <br/>
  74. Request2:${t2}bytes
  75. <%=request.getAttribute("t2")%>
  76. <br/>
  77. Spacesaved:${t1-t2}bytesor${(1-t2/t1)*100}%
  78. <%=request.getAttribute("t3")%>%
  79. <br/>
  80. </body>
  81. </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值