Appfuse2学习笔记--GzipFilter的应用
AppFuse中经过分析使用了大量的开源框架和组件。个人认为整个后台还不是强大,可能与它的定位有关联。我们在项目中积累了大量的Spring以及Hibernate应用都要比之要强很多。但appFuse的前台整合还是相当不错的。先学一个gzipFilter
gzipFilter其实就位于eHcache里面,他是将response中的东东都压缩一下,这个可大大减少了传输时间。
配置web.xml
- <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>
<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文件专门评估
- <%@ page language="java" import="java.util.*,java.net.*,java.io.*"
- pageEncoding="ISO-8859-1"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <%
- String url = request.getParameter("url");
- if (url != null) {
- URL noCompress = new URL(url);
- HttpURLConnection huc = (HttpURLConnection) noCompress
- .openConnection();
- huc.setRequestProperty("user-agent", "Mozilla(MSIE)");
- huc.connect();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- InputStream is = huc.getInputStream();
- while (is.read() != -1) {
- baos.write((byte) is.read());
- }
- byte[] b1 = baos.toByteArray();
- URL compress = new URL(url);
- HttpURLConnection hucCompress = (HttpURLConnection) noCompress
- .openConnection();
- hucCompress.setRequestProperty("accept-encoding", "gzip");
- hucCompress.setRequestProperty("user-agent", "Mozilla(MSIE)");
- hucCompress.connect();
- ByteArrayOutputStream baosCompress = new ByteArrayOutputStream();
- InputStream isCompress = hucCompress.getInputStream();
- while (isCompress.read() != -1) {
- baosCompress.write((byte) isCompress.read());
- }
- byte[] b2 = baosCompress.toByteArray();
- request.setAttribute("t1", new Integer(b1.length));
- request.setAttribute("t2", new Integer(b2.length));
- request.setAttribute("t3", (1 - new Double(b2.length)
- / new Double(b1.length)) * 100);
- }
- request.setAttribute("url", url);
- %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>My JSP 'MyJsp.jsp' starting page</title>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
- <!--
- <link rel="stylesheet" type="text/css" href="styles.css">
- -->
- </head>
- <body>
- This is my JSP page.
- <br>
- <h1>
- Compression Test
- </h1>
- Enter a URL to test.
- <form method="POST">
- <input name="url" size="50">
- <input type="submit" value="Check URL">
- </form>
- <p>
- <%=url%>
- <b>Testing: ${url}</b>
- </p>
- Request 1: ${t1} bytes
- <%=request.getAttribute("t1")%>
- <br />
- Request 2: ${t2} bytes
- <%=request.getAttribute("t2")%>
- <br />
- Space saved: ${t1-t2} bytes or ${(1-t2/t1)*100}%
- <%=request.getAttribute("t3")%>%
- <br />
- </body>
- </html>
Appfuse2学习笔记--GzipFilter的应用相关推荐
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...
- 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移
暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...
- 2020年Yann Lecun深度学习笔记(下)
2020年Yann Lecun深度学习笔记(下)
- 2020年Yann Lecun深度学习笔记(上)
2020年Yann Lecun深度学习笔记(上)
- 知识图谱学习笔记(1)
知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...
- 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记
计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...
- 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 ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
最新文章
- mysql数据去重语句_数据库 mysql 语句
- html中列表的嵌套
- 软件工程——求二维数组所有子矩阵的和的最大值
- Kafka 为什么那么快的 6 个原因!
- 【Tiny4412】制作最小文件系统脚本
- uedit富文本编辑器
- aix系统服务器日志外发,AIX系统主机日志收集方式.docx
- sympy科学计算器
- 代码调试技巧小集合(C语言描述,但C/C++/Pascal通用)
- Ubuntu下将dmg文件转换成dcr和ISO文件
- 开发手机游戏的步骤是怎样的?
- 利用原生JavaScript--实现小球无限转圈
- python 共享内存 c_python共享内存 - DK's Blog - 博客园
- GPU-CUDA编程学习(四)-共享内存
- 《叶圣陶语文教育论集》的阅读笔记和读后感3400字
- 【知识】快乐物质:多巴胺和内啡肽(内酚酞)的区别
- IOS 发布被拒 PLA 1.2问题 整个过程介绍 02 个人账户升级公司账户
- openwrt移植到pb44---第一章(使用chaos_calmer)
- [2020-07]百度广告搜索词获取最新办法
- 亲爱的老狼-html的格式含义全面说明
热门文章
- android AVB2.0(四)libavb库介绍
- 操作系统之进程管理:10、信号量机制(整形、记录型)
- (王道408考研操作系统)第三章内存管理-第一节2:内存管理的基本概念
- 程序是怎样跑起来的:第一章-对程序员来说CPU是什么
- Java 网络实例二(查看主机指定文件的最后修改时间、Socket实现多线程服务器程序、Socket连接到指定主机、网页抓取)
- Linux系统编程:lseek扩展文件大小失败原因分析
- Oracle bug 使用max或min函数into到一个char类型报字符缓冲区太小的错误
- qdu-凑数题(01背包)
- 关于Spring MVC 中地址栏访问 /WEB-INF下的.jsp
- Python sqlalchemy orm 多对多外键关联