BigPipe理解及用法

2021-09-12 06:33:09 字數 1536 閱讀 4809

關於bigpipe在通過我看關於快取的一些知識時碰見的乙個技術,

該技術可以這麼說,逐步式的載入頁面,跟ajax渲染頁面有些類似,首先來說說兩者的區別,

ajax : 在頁面載入完成後或載入中時,去渲染頁面,造成給頁面感覺上來說 是一塊一塊顯示出來的,

bigpipe : 他的理念「你可以把一整個頁面的載入分成乙個乙個的小塊,逐步展示在頁面」,比如說在做蛋糕的時候 並不是 我整個做完後交付給客戶,而是我做好一塊就交給客戶一塊,而每一塊我可以自己定製,這樣在客戶體驗上跟ajax差不多,但是在請求上實際就請求了一次而已, 下面我們就簡單做下demo!

這只是我寫的乙個原生的小demo,bigpipe是facebook發明的技術,具體要我們應用到各種框架還是考自己摸索下~

ob_start(); 開始緩衝區

ob_flush();將php執行過的 傳送給nginx或apache

flush();然後在發給客戶展示

ob_end_clean(); 關閉內部緩衝區,清除內部緩衝區內容

ob_get_length()l; 獲取內部快取區長度

ob_end_flush();傳送內部快取內容到瀏覽器,並關閉內部緩衝區

改buffer是有乙個大小的,所以我在這填充下字元,以達到效果 才能有那種分割顯示的效果!

我們首先需要把nginx版本公升級到了1.7.8。

加上   header('x-accel-buffering: no');

就可以不用關閉 buffer大小了,  就不用去填充字元了。

<?php 

header('x-accel-buffering: no');

//在開始 我們需要開啟緩衝

ob_start();

//接下來我們開始執行頁面載入,

echo str_pad('world', 10000, ' ');

sleep(2);//這裡我們做乙個延遲來更好的展示效果

ob_flush();//這裡將我們php執行過的東西 傳送給apache或nginx

echo str_pad('world1', 10000, ' ');

sleep(2);//這裡我們做乙個延遲來更好的展示效果

ob_flush();//這裡將我們php執行過的東西 傳送給apache或nginx

echo str_pad('world2', 10000, ' ');

sleep(2);//這裡我們做乙個延遲來更好的展示效果

ob_flush();//這裡將我們php執行過的東西 傳送給apache或nginx

flush();//然後這裡apache或nginx傳送給客戶展示

//展示完畢後我們需要清楚快取區,關閉

ob_end_clean();

?>

到這裡就完畢了, 在付乙個流程圖~

php把資料請求好,暫存到php buffer,等快取好了,在傳送給tcp buffer 也就是nginx跟apache 這邊處理完,傳送給client browers 處理就可以了~

strcpy s 用法 及 指標陣列的理解

正確用法 錯誤用法 argsmy 2 lzma strcpy s argsmy 2 maxlen,see 原因 argsmy 2 lzma 因為 argsmy 2 是個指標。他指向一塊分配的空間 長度 maxlen。而這樣賦值後,指標指向位置變了。而再strcpy s argsmy 2 maxlen...

html中meta標籤及用法理解

自己一直想成為高階前端開發工程師,而自學。奈何最近感覺自學收效甚微,一度迷茫。不破不立,打算改變這樣的狀態。春節後上班第一天,今年打算好好實現自己的前端夢想。重新整理 總結前端技術。廢話,就不多說了,開始今天的主題。html中meta標籤 一 meta標籤 含義 標籤位於文件的頭部,不包含任何內容。...

規則引擎RulerZ用法及實現原理解讀

composer安裝 composer require kphoen rulerz 使用 use rulerz compiler compiler use rulerz rulerz use rulerz target native native public function getrulerzc...