ホームページ  >  記事  >  バックエンド開発  >  PHP を介して BigPipe チャンク出力を実装する方法

PHP を介して BigPipe チャンク出力を実装する方法

jacklove
jackloveオリジナル
2018-06-09 15:03:511817ブラウズ

原則: ob_flush()flush() を使用してバッファの内容を事前に出力し、ブラウザはこれをロードできます。コンテンツの一部を事前に作成できるため、ロードする前にすべての出力が完了するのを待つ必要はありません。

ページ コンテンツを小さなブロックに分割し、1 つの部分を出力してから次の部分を出力すると、ユーザーができるだけ早くページ コンテンツを確認でき、ユーザー エクスペリエンスが最適化されます。

まず、head のコンテンツを最初にロードし、css や JavaScript などの静的コンテンツをできるだけ早くロードする必要があるため、flush() を使用する必要があります。先頭の後に出力します。

例: 最初に head の静的コンテンツを出力し、次に各 e388a4556c0f65e1904146cc1a846bee をチャンクに分割して 1 秒ごとに出力します。

<!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. できるだけ多くのコンテンツを出力するために 1 つの出力を使用するようにしてください。
2. 同期的にロードしてみます。 ###3.実際の需要に応じて、より多くのチャンクが分割される方がよい。
4.ob_flush() と flash() は同時に使用する必要があります。これは、場合によっては、flush() が効果を発揮しないためです。

この記事では、php を使用して BigPipe ブロック出力を実装する方法について説明します。関連コンテンツの詳細については、php 中国語 Web サイトを参照してください。

#関連する推奨事項:

#mysql の挿入パフォーマンスの最適化に関する関連紹介

#PHP の共通カスタマイズ方法の使用方法

php経由でXORを使用してファイルを暗号化/復号化する方法

以上がPHP を介して BigPipe チャンク出力を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。