首頁  >  文章  >  後端開發  >  如何透過php 實現BigPipe分塊輸出

如何透過php 實現BigPipe分塊輸出

jacklove
jacklove原創
2018-06-09 15:03:511829瀏覽

原則:利用ob_flush()flush() 將緩衝區的內容提前輸出,瀏覽器可提早載入這部分的內容,無需等待所有輸出完成再載入。

將頁面內容分成一個小塊,輸出一個後再輸出下一個,使用戶可儘早看到頁面內容,優化使用者體驗。

首先 head 的內容應該優先加載,儘早加載css,javascript等靜態內容,因此在head之後應該用 flush()輸出。

範例:先輸出head 靜態內容,再將每個e388a4556c0f65e1904146cc1a846bee分成一個chunk,每隔一秒輸出。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title> Big Pipe </title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <style type="text/css">
  body{margin:0px; background:#CCCCCC;}
  p{text-align:center; margin:10px;}
  img{width:450px;}
  </style>
 </head>
 <?php cache_flush() ?>
 <body>  
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/5CPOE4UZ2T40.jpg"></p>
  <?php cache_flush(); ?>
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/6893CY9XEQD1.jpg"></p>
  <?php cache_flush(); ?>
  <p><img src="http://image.tianjimedia.com/uploadImages/2013/240/83H52SG02V32.jpg"></p>
 </body>
</html>
<?php
function cache_flush($sec=1){
    ob_flush();
    flush();
    usleep($sec*1000000);
}
?>

需要注意的問題:
1.盡量利用一次輸出輸出盡可能多的內容。
2.盡量可以同步載入。
3.chunk不是分得越多越好,要看實際需求狀況決定。
4.ob_flush() 與 flush() 要同時使用,因有些情況flush()會沒有效果。

本篇文章說明如何透過php 實現BigPipe分塊輸出,更多相關內容請關注php中文網。

相關推薦:

關於mysql 最佳化insert 效能的相關介紹

如何使用php 常用自訂方法

如何透過php 使用異或(XOR)加密/解密檔案

以上是如何透過php 實現BigPipe分塊輸出的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn