最近遇到這方面知識,就自己找了一些資料,進行了一些總結

什么是分段傳輸?

當引入了一個http首部。這個首部標識了實體采用chunked編碼傳輸,chunked編碼可以將實體分塊兒進行傳輸,并且chunked編碼的每一塊內容都會自標識長度。這給了web開發者一個啟示,如果需要多個數據,而多個數據均返回較慢的話。可以處理完一塊就返回一塊,讓瀏覽器盡早的接收到html,可以先行渲染。

如何分段傳輸?

我們既然知道了可以將網頁一塊兒一塊兒的傳送,那么我們就可以將網頁進行改造,拿好一塊兒需要的數據,便渲染一塊兒,無需等待,而模板方面,自然也要進行拆分,供服務端拿一塊兒的模板,就渲染一塊兒出去

最后我們會發現:總的處理時長不變,但是采用了分段輸出的網頁,可以盡早的將一段HTML渲染到客戶端,這樣用戶可以使用先到達的部分。另一方面,盡早的頁面反饋,也可以減少用戶等待的焦躁情緒。

綜上,使用此種優化方法,可以提速網頁的渲染速度。

分段傳輸適用場景

1、當頁面的某些后端處理比較耗時的時候,可以試試采用分段傳輸,可以渲染一部分,就發送一部分到客戶端,雖然總時長不變,但是瀏覽器在全部傳輸完之前不會處于干等狀態。可以盡早的渲染并給予用戶反饋。

2、后端處理渲染的數據,上方較快,下方較慢的情況(可以先行渲染上方較快的部分)

bigpipe

把最慢的部分放置于底部傳過來就好了。于是有了一種加載思路,便是使用js回填的方式,后端可以先渲染快的模板,然后再渲染慢的模板。我們可以把頁面上所有的塊兒都架空,然后并行渲染,誰快誰就先渲染回填js。這樣就可以達到并行且先到先渲染的目的.

bigpipe的適用場景

1 后端有較慢的數據處理,阻塞住了頁面的情況下,且最慢的部分不是在網頁的最后。(可以把最慢的部分變為回填)
2 后端有多塊兒數據要并行處理的情況下(你也不知道哪塊兒先回來了,所以先渲染一個架子。對于并行的請求,先回來的先flush回填)

原文來自:https://www.cnblogs.com/yinxingen/p/8045059.html

本文地址:http://www.ouxnnm.live/segment-transmission.html編輯:王毅,審核員:逄增寶

本文原創地址:http://www.ouxnnm.live/segment-transmission.html編輯:王毅,審核員:暫無