前三個(gè)階段執(zhí)行,由Web服務(wù)器,最后四個(gè)階段是由瀏覽器執(zhí)行。每個(gè)Pagelet必須經(jīng)過所有這些階段順序,但BigPipe在不同的階段使幾個(gè)Pagelets同時(shí)執(zhí)行。
(Facebook主頁的Pagelets,每個(gè)矩形對應(yīng)一個(gè)Pagelet。)
上面的圖片使用Facebook主頁為例子來說明如何將網(wǎng)頁是分解成Pagelets。該主頁包括幾個(gè)Pagelets:“作者Pagelet”,“導(dǎo)航Pagelet”,“新聞動(dòng)態(tài)Pagelet”,“請求框Pagelet”,“廣告pagelet”,“朋友推薦”和“聯(lián)系”等他們是相互獨(dú)立的。當(dāng)“導(dǎo)航Pagelet”顯示給用戶,“新聞動(dòng)態(tài)Pagelet”仍然可以在服務(wù)器上正在生成。
在BigPipe,一個(gè)用戶請求的生命周期是這樣的:在瀏覽器發(fā)送一個(gè)HTTP請求到Web服務(wù)器。在收到的HTTP請求,并在上面進(jìn)行一些全面的檢查,網(wǎng)站服務(wù)器立即發(fā)回一個(gè)未關(guān)閉的HTML文件,其中包括一個(gè)HTML 標(biāo)簽和標(biāo)簽的開始標(biāo)簽。標(biāo)簽包括BigPipe的JavaScript庫來解析Pagelet以后收到的答復(fù)。在標(biāo)簽,有一個(gè)模板,它指定了頁面的邏輯結(jié)構(gòu)和Pagelets占位符。例如:
渲染后的第一個(gè)反應(yīng)到客戶端,Web服務(wù)器繼續(xù)一個(gè)接一個(gè)生成Pagelets只要一個(gè)Pagelet生成,他將立即刷新到客戶端在一個(gè)JSON編碼的對象,包括所有的CSS,JavaScript的pagelet,它的HTML內(nèi)容,以及一些元數(shù)據(jù)所需的資源。例如:
出處:isd
責(zé)任編輯:bluehearts
上一頁 BigPipe:高性能的"流水線技術(shù)"網(wǎng)頁 [1] 下一頁 BigPipe:高性能的"流水線技術(shù)"網(wǎng)頁 [3]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|