基于struts2标签的bigpipe技术实现

基于struts2标签的bigpipe技术实现

ID:8465592

大小:424.65 KB

页数:17页

时间:2018-03-28

基于struts2标签的bigpipe技术实现_第1页
基于struts2标签的bigpipe技术实现_第2页
基于struts2标签的bigpipe技术实现_第3页
基于struts2标签的bigpipe技术实现_第4页
基于struts2标签的bigpipe技术实现_第5页
资源描述:

《基于struts2标签的bigpipe技术实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于Struts2标签的BigPipe技术实现简介: Facebook介绍了一个名为BigPipe的技术,这项技术可使Facebook站点的访问速度提升一倍。目前,也有一小部分文章介绍了该技术在JSP中的实现,但是这些文章只是基于Servlet的理论实现,对于JavaWeb开发者来说并不存在实际意义。本文基于BigPipe的思想,开发了BigPipe的JSP实现,该技术可以实现JSP页面的快速加载,增强用户体验,读者不仅可以从本文了解BigPipe原理,还可以使用开发的Struts2标签进行实际的开发,相信对读者的学习和开发有很大的好处。引言Facebook创立了一项技术名

2、为BigPipe。该技术改善了Facebook用户的用户体验,减少页面加载等待时间,它的原理简单、合理。本文借鉴BigPipe的思想,针对Struts2和JSP技术的特点,实现了单线程与多线程版的BigPipe。两种版本的实现各有优缺点,它们与Facebook的BigPipe不尽相同,其中多线程版的BigPipe实现与Facebook较为类似。单线程与多线程实现方式都可以明显改善用户体验,文章之所以要介绍两种实现,是笔者认为二者都有更加适用的情境,在很多情况下,单线程的使用情况更多、更简单。文章将用实际的使用实例,对两种实现进行详细的介绍。在阅读文章之前,读者最好先了解一下

3、Struts2自定义标签的开发方法、Java的Concurrent多线程框架以及FreeMarker模板引擎,这将帮助你更好的理解文章的BigPipe实现方式。技术简介现在的浏览器,显示网页时需要经历连续的几个步骤,分别是请求网页->服务器端的页面生成->返回全部内容->浏览器渲染,在这一过程中,“服务器的页面生成”到“返回全部内容”阶段,浏览器什么也不做,大部分浏览器就直接显示空白。可想而知,如果页面庞大,那么等待的时间就很长,这很可能导致大量的用户丢失。Facebook提出的BigPipe技术就是为了解决这个问题,它是基于多线程实现,原理大致可以分为以下两点。将一个页面

4、分为多个的PageLet,每个的PageLet实际上就是一个HTML片段,每个PageLet的页面内容由单独的线程生成与处理。由于使用了多线程,PageLet内容的返回顺序无法确定,因此如果将内容直接写回HTML文档内,它的位置是无法确定的,因此需要借助JavaScript将内容插入到正确的位置,因为脚本代码的位置无关紧要。实现了以上两点,最终的效果将是网页中首先出现网页结构和基本的、简单的信息,然后才会在网页的各个PageLet位置出现具体内容,这些PageLet没有按流模型从上到下从左到右出现,而是“并行出现”,加载页面速度加快。从以上的分析,这种技术至少有两种好处。首

5、先出现的结构和基本信息,告诉用户页面正在加载,是有希望的。并行加载的机制使得某个PageLet的缓慢不会影响到别的PageLet的加载。所有的PageLet在同一个HTTP请求内处理。接下来,文章先进行示例程序的展示与分析,给出各种实现方式的对比,然后讲解了基于Struts2的BigPipe标签开发,最后总结了单线程与多线程实现方式的优缺点。示例展示为了让读者对本文所讲内容有一个实际的印象,提升您对该技术的兴趣,本文以一个例子,采用三种实现方式来实现。该例子实现了一个2*3的表格,按从左到右、从上到下的顺序(也就是文档流模型的加载顺序),标明了序号。每个单元格的内容,都使用

6、Thread.sleep方法模拟了加载时间较长的HTML内容。按照文档流顺序,每个单元格的线程等待时间分别是1、2、3、4、5、6秒。我们观察三种实现方式:普通实现、单线程BigPipe、多线程BigPipe,看它们对结果的影响。示例程序在附件部分,它是一个JEEEclipse工程,可以到Eclipse官方网站下载JEEEclipse,下载后导入工程。另外运行示例程序需要Tomcat6+的支持。普通方式打开附件,查看WebContent下的normal.jsp源码,如下所示<%@pagelanguage="java"contentType="text/html;charse

7、t=utf-8"pageEncoding="utf-8"%><%longpstart=System.currentTimeMillis();%>普通例子<%longstart=System.currentTimeMillis();Thread.sleep(1000);longseconds=System.currentTimeMillis()-start;%>1秒的内容
加载

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。