Skip to content

JohnZhengHub/BigPipe-ServletDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

BigPipe-ServletDemo

这是利用Maven开发的一个基于Servlet的BigPipe简单案例.

BigPipe的主要思想是实现浏览器和服务器的并发执行,实现页面的异步加载从而提高页面加载速度.为了达到这个目的,BigPipe首先根据页面的功能或位置将一个页面分成若干模块(模块称作pagelet),并对这几个模块进行标识.举个例子,在博客园个人首页包括几大板块,如头部信息,左边信息,博文列表,footer等.我们可以将首页按这些功能分块,并用唯一id或名称标识pagelet.客户端向服务端发送请求后(发出一次访问请求,如请求访问个人博客首页),服务端采用并发形式获取各个pagelet的数据并渲染pagelet的页面效果.一旦某个pagelet页面渲染完成则立刻采用json形式将该pagelet页面显示结果返回给客户端.客户端浏览器会根据pagelet的id或标识符,在页面的制定区域对pagelet进行转载渲染.客户端的模块加载采用js技术.具体流程如下:

  • 1.请求解析:Web服务器解析和完整性检查的HTTP请求。
    1. 数据获取:Web服务器从存储层获取数据。
    1. 标记生成:Web服务器生成的响应的HTML标记。
    1. 网络传输:响应从Web服务器传送到浏览器。
    1. CSS的下载:浏览器下载网页的CSS的要求。
    1. DOM树结构和CSS样式:浏览器构造的DOM文档树,然后应用它的CSS规则。
    1. JavaScript中下载:浏览器下载网页中JavaScript引用的资源。
    1. JavaScript执行:浏览器的网页执行JavaScript代码

前三个阶段由Web服务器执行,最后四个阶段(5,6,7,8)是由浏览器执行。所以在服务器可以采用多线程并发方式对每个pagelet进行数据获取和标记生成页面,生成好的pagelet页面发送给前端.同时在浏览器端,对css,js的下载可以采用并行化处理.这就达到了浏览器和服务器的并发执行的效果,这样使得多个流程可以叠加执行,加少了整体页面的加载时间.浏览器端的并行化交给浏览器自己处理不需要我们做额外工作.在BigPipe中主要是处理服务端的并行性.

About

这是利用Maven开发的一个基于Servlet的BigPipe简单案例.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published