六安沧州西安三亚宝鸡菏泽
投稿投诉
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

译高性能的流水线技术网页

  原文地址:http:www。facebook。comnote。php?noteid389414033919
  译文地址:http:isd。tencent。com?p2419
  作者:蒋长浩
  Facebook的网站速度做为最关键的公司任务之一。在2009年,我们成功地实现了Facebook网站速度提升两倍。而正是我们的工程师团队的几个关键的创新使它成为可能。在本文中,我将向大家介绍我们的秘密武器之一,我们称之为BigPipe的伟大底层技术。
  BigPipe是一个重新设计的基础动态网页服务体系。大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行。这是类似于大多数现代微处理器的流水线执行过程:多重指令管线通过不同的处理器执行单元,以达到性能的最佳。虽然BigPipe是对现有的服务网络基础过程的重新设计,但它却不需要改变现有的网络浏览器或服务器,它完全使用PHP和JavaScript来实现。
  动机
  为了更好的了解BigPipe,我们需要了解一下现有的动态Web服务系统,它的历史可以追溯到万维网的初期,但现在与初期相比却并没有多少改变。现代网站有着远远高于10年前的动态效果和互动性,但传统的网页服务系统早已无法跟上当今互联网速度的要求。在传统的模式,用户请求的生命周期如下:
  1。浏览器发送一个HTTP请求到Web服务器。
  2。Web服务器解析请求,然后读取数据存储层,制定一个HTML文件,并用一个HTTP响应把它发送到客户端。
  3。HTTP响应通过互联网传送到浏览器。
  4。浏览器解析Web服务器的响应,使用HTML文件构建了一个的DOM树,并且下载引用的CSS和JavaScript文件。
  5。CSS资源下载后,浏览器解析它们,并将它们应用到DOM树。
  6。JavaScript资源下载后,浏览器解析并执行它们。
  传统模式在现代网站中效率是非常低下的,因为很多系统的操作顺序,不能互相重叠。一些如延时加载JavaScript、并行下载等优化技术已被网络社区广泛采用,以此来克服的一些限制。然而,这些优化却很少涉及Web服务器和浏览器的执行顺序造成的瓶颈。当Web服务器正忙生成一个页面,浏览器处于闲置状态,浪费其周期无所事事。当Web服务器完成生成页面,并将其发送到浏览器,浏览器则成为性能瓶颈并且Web服务器对其无从帮助。重叠Web服务器的生成时间与浏览器的渲染时间,我们不仅可以减少最终的时间延迟,也能使网页更早显示用户可见区域给用户,从而大大减少用户对延迟的感知。
  Web服务器的产生时间和浏览器的渲染时间重叠,是特别有用的,如Facebook这样内容丰富的网站。一个典型的Facebook的网页包含许多来源不同的数据资料:好友名单,好友动态,广告等。在传统的网页呈现模式的用户将不得不等到这些查询数据都返回并生成最终文件,然后将其发送到用户的电脑。任何一个查询延迟都将拖慢整个最终文件的生成。
  BigPipe如何工作
  要利用该Web服务器和浏览器之间的并行性,BigPipe首先分解网页成多个可调用的Pagelets。正如流水线微处理器划分一个指令的生命周期为(如取指令,指令解码,执行,写回寄存器等)多个阶段,BigPipe的页面生成过程分为以下几个阶段:
  1。请求解析:Web服务器解析和完整性检查的HTTP请求。
  2。数据获取:Web服务器从存储层获取数据。
  3。标记生成:Web服务器生成的响应的HTML标记。
  4。网络传输:响应从Web服务器传送到浏览器。
  5。CSS的下载:浏览器下载网页的CSS的要求。
  6。DOM树结构和CSS样式:浏览器构造的DOM文档树,然后应用它的CSS规则。
  7。JavaScript中下载:浏览器下载网页中JavaScript引用的资源。
  8。JavaScript执行:浏览器的网页执行JavaScript代码。
  前三个阶段执行,由Web服务器,最后四个阶段是由浏览器执行。每个Pagelet必须经过所有这些阶段顺序,但BigPipe在不同的阶段使几个Pagelets同时执行。
  (Facebook主页的Pagelets,每个矩形对应一个Pagelet。)
  上面的图片使用Facebook主页为例子来说明如何将网页是分解成Pagelets。该主页包括几个Pagelets:作者Pagelet,导航Pagelet,新闻动态Pagelet,请求框Pagelet,广告pagelet,朋友推荐和联系等他们是相互独立的。当导航Pagelet显示给用户,新闻动态Pagelet仍然可以在服务器上正在生成。
  在BigPipe,一个用户请求的生命周期是这样的:在浏览器发送一个HTTP请求到Web服务器。在收到的HTTP请求,并在上面进行一些全面的检查,网站服务器立即发回一个未关闭的HTML文件,其中包括一个HTML标签和标签的开始标签。标签包括BigPipe的JavaScript库来解析Pagelet以后收到的答复。在标签,有一个模板,它指定了页面的逻辑结构和Pagelets占位符。例如:
  渲染后的第一个反应到客户端,Web服务器继续一个接一个生成Pagelets只要一个Pagelet生成,他将立即刷新到客户端在一个JSON编码的对象,包括所有的CSS,JavaScript的pagelet,它的HTML内容,以及一些元数据所需的资源。例如:
  在客户端在收到Pagelet通过onPageletArrive发出的指令,BigPipe的JavaScript库将首先下载它的CSS资源;在CSS资源被下载完成后,BigPipe将在Pagelet的标记HTML显示它的innerHTML。多个Pagelets的CSS可在同一时间下载,它们可以根据其各自CSS的下载完成情况来确认显示顺序。在BigPipe中,JavaScript资源的优先级低于CSS和页面内容。因此,BigPipe不会在所有Pagelets显示出来之前下载任何Pagelet中的JavaScript。然后,所有Pagelets的JavaScript异步下载。最后Pagelet的JavaScript初始化代码根据其各自的下载完成情况来确定执行顺序。
  这种高度并行系统的最终结果是,多个Pageletsr的不同执行阶段同时进行。例如,浏览器可以正在下载三个PageletsCSS的资源,同时已经显示另一Pagelet内容,与此同时,服务器也在生成新的Pagelet。从用户的角度来看,页面是逐步呈现的。最开始的网页内容会更快的显示,这大大减少了用户的对页面延时的感知。如果您要自己亲眼看到区别,你可以尝试以下连结:传统模式和BigPipe。第一个链接是传统模式单一模式显示页面。第二个链接是BigPipe管道模式的页面。如果您的浏览器版本比较老,网速也很慢,浏览器缓存不佳,哪么两页之间的加截时间差别将更加明显。
  性能测试结果
  下图是传统模式和BigPipe性能数据比较图,数据是75用户对一个页面中最重要的内容(例如:新闻动态被认为是在Facebook主页上最重要的内容)的感知延迟时间。收集数据方式是加载Facebook主页50次并且禁用浏览器缓存。该图显示BigPipe使用户在大多数浏览器中感受到的延迟减少了一半。
  (Facebook主页的延迟时间对比)
  值得一提的是BigPipe是从微处理器的流水线中得到启发。然而,他们的流水线过程之间存在一些差异。例如,虽然大多数阶段BigPipe只能操作一次Pagelet,但有时多个Pagelets的CSS和JavaScript下载却可以同时运作,这类似于超标量微处理器。BigPipe另一个重要区别是,我们实现了从并行编程引入的障碍概念,所有的Pagelets要完成一个特定阶段,如多个Pagelet显示区,它们都可以进行进一步JavaScript下载和执行。
  在Facebook,我们鼓励创造性思考。我们不断的尝试创新技术,以使我们的网站更快。
  作者蒋长浩目前是Facebook的研究科学家,他致力于研究使网站更快的各种创新。

我和家乡之间人言落日是天涯,望极天涯不见家,自古以来,每个身处异地的人,都会对家乡有扯不断的情丝。我,辽宁沈阳人,曾在四川生活过一年,又来到广东,几年外游,如今一切都不一样了,有时我会想:……精彩的一课早就听说郑舒南家养了一些稀奇古怪的动物,很想去一探究竟,可是时间不允许这次趁郑舒南生日,可以去他家看看了。来到他家我一眼就看到一面墙边放了几个不大不小的盒子,里面还点着灯……做好现在的自己现在有这样一种人,他们不思进取,却怨天尤人,认为自己才华横溢,只是没有遇到伯乐,成天幻想着一些不切实际之事,觉得换一个时代就能大有作为。其实不然,他们那些态度不端正的人,在任何……那一刻我后悔万分人生中每个人都有后悔的事,我也不例外。一阵清风拂过,让我不由自主地回想起了让我后悔万分的一刻。在太阳强烈的照射下,树姑娘用她绿色的衣服挡住了太阳光,一只只小蚂蚁在阳光的照……尝秋秋天是一个收获满满的季节,五谷丰登,瓜果飘香,给人无限喜悦。9月15日下午,小作家培训班的老师为了让我们感受秋天的美好,组织了一场别具一格的尝秋活动。老师让我们把桌子拼成……距离夜暗方显万颗星,灯明始见一缕尘。每个人都是一座孤岛,生来死去都孤独而行,但美好的是,我们天生都具有一种能力,一种寻找相似的灵魂并且尝试缩短一切距离的能力。在这个过程中,所有的距……你是我们的骄傲在进行曲中,我们迎来了一年一度的运动会。风柔柔地吹,柳条悠悠地轻拂,秋光照在身上,暖在运动员心里。清爽的秋天总会有凉风吹来,也吹来了同学们对运动的热情。跑道上的运动员们像……我为社区当义工每年春节,我们一家人都会外出旅游。今年寒假因为假期短,没有安排旅游,就在家里过年。那天,我走出单元门玩,看到社区的物业伯伯们正在整理东西,一位伯伯告诉我:马上锁门放假,正……亲尝汤药读后感亲有疾,药先尝。昼夜侍,不离床。幼儿园时,老师就让天天背颂,当时不理解其意,今天学习了《亲尝汤药》的故事,倍受感动。汉文帝刘恒是历史上有名的仁孝皇帝,汉文帝侍母尝药,更是……小老鼠吃西瓜看图说话【小老鼠吃西瓜】姜逸辰在一个骄阳似火的早晨,小蓝和小棕从洞里面出来准备觅食,它们走到洞口,来到厨房,闻到了一股香甜的气味。小蓝和小棕跳上桌子看到了一片红彤彤的大西瓜……漫画爸爸他,有一头乌黑发亮的头发,有一双炯炯有神的大眼睛,高挺的鼻梁下有一张能说会到的嘴巴,胖胖的身子,经常身穿一身运动装,这就是我的老爸!记得有一次,我的老爸跟我说:女儿,老爸……揣在怀里的爱在往年的冬天里,一直是寒冷的。但是,在今年初冬的一个日子里,我的心里却有一段抹不去的温暖。那是初冬一个寒风凛冽的下午,这天我打扫卫生放学有些晚了,当我出校门时,天已经暗了……
教你招快速找到自己想要的资源视解点卯2018111910:42:21一、搜索引擎指令法互联网时代,我们遇到问题,第一想到的肯定是搜索引擎,但你真的会用吗?今天介绍几种高级指令。让你快速找到自己……水稻叶尖枯病如何防治水稻叶尖枯病有什么症状?水稻叶尖枯病发生原因是什么?用什么农药可以防治水稻叶尖枯病?以下中国三农网就作简单介绍,供网友们参考。一、水稻叶尖枯病症状及危害水稻叶尖枯病又叫水……凤尾竹需要修剪吗图解凤尾竹需要进行修剪,因为凤尾竹在生长的过程中,会不断的进行新陈代谢,所以老的枝杆会不断的枯萎掉,这个时候就需要进行一定的修剪,并且需要把枝叶过于密集的部分也进行相应的修剪。……系统理论群星谱对系统管理理论做出巨大贡献的,不仅仅是卡斯特和罗森茨韦格。提到系统论,少不了贝塔朗菲、维纳、申农、普利高津等人。因此,对这些学者及其理论,我们有必要适当了解。一般系统理论……柯基小时候挺勤快出门时愿意自己跑着长柯基是比较受欢迎的一种狗,个子大小比较合适,而且性格相对来说也是比较温顺,网友一直以来都挺想养只柯基,以前因为工作太忙,没有时间出来遛狗,所以就一直给搁置在一边,后来网友换了工……情人节大营销案例谁更打动你的芳心今年情人节和元宵节的邂逅格外引人瞩目。情人节是一个可以搭售情感的日子。例如鲜花、珠宝,甚至电子产品,都会藉着情感消费的需求吸引痴男怨女的注意,历来是众商家决战商场的特殊旺季,营……苹果升级卡不卡苹果x升级ios14卡顿不是很明显,但是发热发烫的现象太严重了,很多网友建议暂时不要升级,毕竟现在还是体验版,各种BUG,等iOS14正式版出来升级也不迟,一起来看看本站提供的……海苔脆吃多了会长胖吗海苔脆的热量高吗我们都知道,海苔脆是比较常见的一种零食,它主要是用海苔和其他食材制作而成的,里面一般都会放很多的芝麻粒,吃起来香香脆脆的,味道很不错,深受人们喜欢。那么海苔脆吃多了会发胖吗?下……冰箱结冰严重是坏了吗冰箱为我们存储食物、延长保质期提供了便利,尤其是在夏天的时候,还可以冻冰棒吃。冰箱基本上是一天24小时全天候工作的,所以用电量比较大,如果冰箱里面结冰、结霜的话,会更加耗电。所……时评大学生求职简历注水难道是无奈之举面对严峻的就业形势,今年年初以来,南宁市多场招聘会场场爆满。在这样的形势下,大学生求职简历注水现象受到更多关注。注水简历不仅给大学生自身就业和用人单位选才设下障碍,也使他们的人……生肖运势属兔马年综合运势属兔马年运势总分析属兔马年运势略差,因为甲午年属于火旺之年,又逢天干甲木生之,所以火旺之势一发不可收拾。属兔人2014年运势之中,首先,属兔的财运因为午年卯午相破,破出午……虎皮鹦鹉爪子变黑是怎么回事虎皮鹦鹉爪子变黑主要有两种原因。第一种是它们年纪大了,第二种是它们生病了。它们小时候爪子是粉嫩粉嫩的,但随着年龄的增长,它们爪子的颜色也会慢慢变深,直至变黑。另外,如果它们的爪……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网