Facebook的网站速率做为最要害的公司义务之一。在2009年,我们成功地实现了Facebook网站速率提升两倍 。而正是我们的工程师团队的几个要害的创新使它成为可能。在本文中,我将向人人先容我们的秘密武器之一,我们称之为BigPipe的伟大底层手艺。
BigPipe是一个重新设计的基础动态网页服务体系。大要思绪是,剖析网页成叫做Pagelets的小块,然后通过Web服务器和浏览器确立管道并治理他们在差别阶段的运行。这是类似于大多数现代微处置器的流水线执行历程:多重指令管线通过差别的处置器执行单米,以到达性能的更佳。虽然BigPipe是对现有的服务 *** 基础历程的重新设计,但它却不需要改变现有的 *** 浏览器或服务器,它完全使用PHP和JavaScript来实现。
为了更好的领会BigPipe,我们需要领会一下现有的动态Web服务系统,它的历史可以追溯到万维网的初期,但现在与初期相比却并没有若干改变。现代网站有着远远高于10年前的动态效果和互动性,但传统的网页服务系统早已无法跟上当今互联网速率的要求。
为了明白BigPipe,我们先看一下传统方式下用户请求的历程:
传统模式在现代网站中效率是异常低下的,由于许多系统的操作顺序,不能相互重叠。一些如延时加载JavaScript、并行下载等优化手艺已被 *** 社区普遍接纳,以此来战胜的一些限制。
然而,这些优化却很少涉及Web服务器和浏览器的执行顺序造成的瓶颈。当Web 服务器正忙天生一个页面,浏览器处于闲置状态,虚耗其周期无所事事。当Web 服务器完成天生页面,并将其发送到浏览器,浏览器则成为性能瓶颈而且Web 服务器对其无从辅助。重叠服务器的天生时间与浏览器的渲染时间,我们不仅可以削减最终的时间延迟,也能使网页更早显示用户可见区域给用户,从而大大削减用户对延迟的感知。
Web 服务器的发生时间和浏览器的渲染时间重叠,是稀奇有用的,如Facebook这样内容丰富的网站。一个典型的Facebook网页包罗许多泉源差别的数据资料:密友名单,密友动态,广告等。在传统网页出现模式的用户将不得不等到这些查询数据都返回并天生最终文件,然后将其发送到用户的电脑。任何一个查询延迟都将拖慢整个最终文件的天生。
BigPipe首先剖析网页成多个pagelet,每个Pagelet都经由以下几个阶段:
(1)Server请求剖析和检查request感受和传统模式下的页面请求历程一样啊,但BigPipe能让多个Pagelet在统一时刻处于差别的阶段
(Facebook主页的pagelets,每个矩形对应一个Pagelet。)
该Facebook主页包罗多个pagelet,相互自力,从用户的角度来看,页面是一块一块逐步出现的,感受网页内容出现得异常快,大大削减了用户对页面延时的感知。例如当“导航pagelet”处于页面显示阶段时,“新闻动态pagelet”可能正处于Server天生阶段。在BigPipe中,一个用户请求的生命周期是这样的:在浏览器发送一个HTTP请求到Web服务器。在收到的HTTP请求,并在上面举行一些周全的检查,服务器收到请求后,举行一些需要的检查,然后立刻返回一个不完整的HTML文件:其中有<head>和<body>
<head>中包罗BigPipe的JavaScript库,用来剖析Pagelet
<body>中是一个模板,形貌了页面的逻辑结构,每个逻辑部门使用pagelet占位符举行占位,例如:
<div> <div> <div id="pagelet_nav"></div> </div> <div> <div id="pagelet_composer"></div> <div id="pagelet_ads"></div> </div>
Web服务器一个接一个的天生pagelet,只要一个pagelet天生了,立刻被发送到客户端,客户端收到一个pagelet后就更先剖析并加载CSS,然后渲染显示出来,于此同时,服务器在并行处置下一个pagelet
例如,浏览器可以在下载3个pagelet的CSS的同时,渲染另一个pagelet内容,与此同时,服务器在天生另一个pagelet的内容。
以是BigPipe的效果就是:多个pagelet同时执行,但处于差别阶段,使浏览器和服务器并行高效处置
pagelet的内容是一个 *** ON工具,包罗HTML内容,和需要引用的CSS、JavaScript
BigPipe首先下载pagelet的CSS,然后在这个pagelet占位符所在的位置举行显示,多个pagelet的CSS可同时下载,可以无序,JavaScript的优先级更低,所有pagelet都显示出来之后才更先下载JavaScript
下图是传统模式与BigPipe的性能对照图,对Facebook主页的延迟时间举行了对比, *** 数据方式是在禁用浏览器缓存的情况下加载页面50次,该图显示BigPipe使用户在大多数浏览器中感受到的延迟削减了一半。
值得一提的是BigPipe是从微处置器的流水线中获得启发。然而,他们的流水线历程之间存在一些差异。例如,虽然大多数阶段BigPipe只能操作一次Pagelet,但有时多个Pagelets的CSS和JavaScript下载却可以同时运作,这类似于超标量微处置器。
BigPipe另一个主要区别是,我们实现了从并行编程引入的“障碍”观点,所有的Pagelets要完成一个特定阶段,如多个Pagelet显示区,它们都可以举行进一步JavaScript下载和执行。
在Facebook,我们激励创造性思索。我们不停的实验创新手艺,以使我们的网站更快。
内容整理自Facebook文章:https://www.facebook.com/note.php?note_id=389414033919
1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入
学电脑黑客技术的软件(想学电脑技术)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑客、黑客业...
【#央视揭山寨招生公众号骗局#扩散周知,警惕!】账号抢注,内容高仿,打着某地“招生官网”的旗号引流、推广、牟利…许多地区招生部门的微信公众号被个人和商业机构提前抢注,仿冒官方进行虚假宣传。不仅如此,这...
01 最先大家看一下全部短视频直播电子商务的发展趋势。 以往的2年至今,短视频直播电子商务的发展趋势速率十分快。 有关客户经营规模及其客户经营规模的特点。现阶段而言,头顶部的小视频和直播电子商务...
手机如何监控电脑桌面? 首先我们进入手机桌面,找到向日葵软件,打开(没有该软件的,请大家自行下载)。 如图,在打开的页面,点击查看电脑图标。 在打开的页面下方,点击桌面控制选项。 如图,在打开的登录页...
如何找正规的黑客(黑客400元微信记录可靠吗)主板报道称,Facebook和外部供应商开辟了一种黑客对象,赞助美国联邦观察局(FBI)侵入一位儿童色情犯法者的匿名操纵体系Tails,以拘捕他。末了联邦...
指神技的使用次数,一般为2次,粉钻可能是三次。每使用一次龙脉则会减少一个。这是腾讯为了不要神级太强,太过广泛(因为只要打巡海夜叉获得天地宝鉴第一。 楼主您好龙脉这个是不能人为激活什么的等以后2哥更新出...