原則: 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() が効果を発揮しないためです。
#関連する推奨事項:
#mysql の挿入パフォーマンスの最適化に関する関連紹介
php経由でXORを使用してファイルを暗号化/復号化する方法
以上がPHP を介して BigPipe チャンク出力を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。