Facebook BigPipe基礎(chǔ)動(dòng)態(tài)網(wǎng)頁(yè)服務(wù)體系
BigPipe是一個(gè)重新設(shè)計(jì)的基礎(chǔ)動(dòng)態(tài)網(wǎng)頁(yè)服務(wù)體系。大體思路是,分解網(wǎng)頁(yè)成叫做Pagelets的小塊,然后通過(guò)Web服務(wù)器和瀏覽器建立管道并管理 他們?cè)诓煌A段的運(yùn)行。這是類似于大多數(shù)現(xiàn)代微處理器的流水線執(zhí)行過(guò)程:多重指令管線通過(guò)不同的處理器執(zhí)行單元,以達(dá)到性能的最佳。雖然BigPipe是 對(duì)現(xiàn)有的服務(wù)網(wǎng)絡(luò)基礎(chǔ)過(guò)程的重新設(shè)計(jì),但它卻不需要改變現(xiàn)有的網(wǎng)絡(luò)瀏覽器或服務(wù)器,它完全使用PHP和JavaScript來(lái)實(shí)現(xiàn)。
BigPipe如何工作
要利用該Web服務(wù)器和瀏覽器之間的并行性,BigPipe首先分解網(wǎng)頁(yè)成多個(gè)可調(diào)用的Pagelets。正如流水線微處理器劃分一個(gè)指令的生命周期為(如“取指令”,“指令解碼”,“執(zhí)行”,“寫回寄存器”等)多個(gè)階段,BigPipe的頁(yè)面生成過(guò)程分為以下幾個(gè)階段:
請(qǐng)求解析:Web服務(wù)器解析和完整性檢查的HTTP請(qǐng)求。
數(shù)據(jù)獲?。篧eb服務(wù)器從存儲(chǔ)層獲取數(shù)據(jù)。
標(biāo)記生成:Web服務(wù)器生成的響應(yīng)的HTML標(biāo)記。
網(wǎng)絡(luò)傳輸:響應(yīng)從Web服務(wù)器傳送到瀏覽器。
CSS的下載:瀏覽器下載網(wǎng)頁(yè)的CSS的要求。
DOM樹(shù)結(jié)構(gòu)和CSS樣式:瀏覽器構(gòu)造的DOM文檔樹(shù),然后應(yīng)用它的CSS規(guī)則。
JavaScript中下載:瀏覽器下載網(wǎng)頁(yè)中JavaScript引用的資源。
JavaScript執(zhí)行:瀏覽器的網(wǎng)頁(yè)執(zhí)行JavaScript代碼。
