基於Nodejs的BigPipe實現

2022-03-25 02:13:42 字數 1107 閱讀 9581

簡介

bigpipe是facebook推出的用於優化網頁載入速度的技術,它突破了傳統網頁的載入方式,通過把網頁內容進行分塊,然後對這些塊進行並行傳輸從,使得瀏覽器的渲染無需等到整個頁面載入完畢,大大提公升網頁呈現速度。天貓上首頁就有這種實現。

bigpie適用於網頁分塊清晰,且規模達到一定程度。使用bigpipe要達到優化的效果才有意義。

實現原理

利用http1.1中的transfer-encoding:chunked頭訊息來進行分塊傳輸,初始時只傳輸網頁的骨架,待到具體分塊到達後,利用js填充骨架,並載入塊所需js、css等資源

已下是基於nodejs的bigpipe的簡單實現:

採用express框架,它預設傳送transfer-encoding:chunked頭訊息

1

var express = require('express');23

(req, res) 10}

1112

//第一次輸出,未閉合body標籤,只引入必需的js和css等資源

13res.write(

14 ''+

15 '' +

23 '

' +24 ''25

);26

27//

模擬生成塊所需要的時間 no.1

28 settimeout(function

(), 1000);

3233

//模擬生成塊所需要的時間 no.2

34 settimeout(function

(), 3000);

38});

3940

() );

參考

bigpipe: pipelining web pages for high performance(out of the wall)

using streaming chunked html to get node.js to deliver more data

基於nodejs的檔案上傳

nodejs的檔案上傳需要依賴於multer這個中介軟體,multer接受form data編碼資料,所有要求前端攜帶的時候要注意一下,如 如果表單不是enctype這個格式,表單是拿不到檔案。1.先搭建伺服器 匯入express框架 const express require express 建立...

nodejs基於事件通訊

話說nodejs是非同步呼叫的,所以無法用return返回結果。有兩種解決方式 callback函式和事件。兩種方式相比起來事件的方式更加簡潔。nodejs裡的事件主要使用它的events模組,繼承eventemitter。這裡寫了乙個monitorevent類 var util require u...

nodejs基於Token的身份認證

起初的驗證方式是存在於伺服器的,使用者登入進來以後,伺服器判斷成功,將資料存進session裡面,向使用者返回乙個sessionid。這樣的弊端是,假如使用者基數特別大,每登入乙個使用者,就要儲存一條,對伺服器的記憶體壓力比較大。基於token的驗證方法是無狀態的,因此我們就不用把資訊存在伺服器中了...