ホームページ > バックエンド開発 > PHPチュートリアル > PHP は BigPipe チャンク出力を実装します_PHP チュートリアル

PHP は BigPipe チャンク出力を実装します_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:48:35
オリジナル
954 人が閲覧しました

Yahoo システムのベスト プラクティスでは、ブラウザがスクリプト、スタイル、画像 (JavaScript、CSS、画像は通常、チェーンの形式で外部にあります)など、バックグラウンドで呼び出す必要があるデータ ソースまたは API が複数ある場合は、1 つの出力を 1 つずつ完了し、フロントエンドでページを組み立てるようにします。 js を使用して、ユーザー エクスペリエンスを最適化する効果を実現します。ユーザーが待つ時間は、最も短いバレルを備えた高速の木製ボードです。
引用は次のとおりです:
バッファを早めにフラッシュします
タグ: サーバー
ユーザーがページをリクエストすると、バックエンド サーバーが HTML ページを結合するのに 200 ~ 500 ミリ秒かかることがあります。この間、ブラウザはデータの到着を待機するためアイドル状態になります。PHP には、flush() という関数があります。 ) これにより、部分的に準備ができた HTML 応答をブラウザーに送信できるようになり、バックエンドが HTML ページの残りの処理でビジー状態になっている間に、ブラウザーがコンポーネントの取得を開始できるようになります。この利点は、主にビジーなバックエンドまたは軽量のフロントエンドで見られます。 フラッシュを検討するのに適した場所は、HEAD の直後です。通常、HEAD の HTML の生成が簡単で、バックエンドの処理中にブラウザーが並行してフェッチを開始できるように CSS および JavaScript ファイルを含めることができるからです。
例:

...



...
Facebook が提案した BigPipe テクノロジは、このアイデアをより具体的な方法で実装しています。一般的なアイデアは、Web ページをページレットと呼ばれる小さな部分に分解し、Web サーバーとブラウザを介してパイプラインを確立して、さまざまな段階でその操作を管理するというものです。
php で小さなテストを実行します

';ob_flush();flush();sleep(2);echo "b";?>
結果は、出力コンテンツのサイズに関係なく、Firefox と Chrome では 2 秒後に表示されます。説明 ブラウザはそれをキャッシュしました。実験の結果、キャッシュ サイズは 1024 で、これもブラウザによって行われた最適化です。返信ヘッダーから、セグメントで出力する場合、返信パケットは gzip を経由しないことがわかります。

Wireshark を通して、バックグラウンド出力が実際に 1 つずつチャンク化されていることがわかります。おそらくブラウザーが処理を行っているようです。キャッシュ サイズは 1024B または MTU サイズ (ネットワークの状況に応じて 1400B 以上) である必要があります。 ) 出力の最初の段落は 1024 に増加し、Chrome と Firefox は正常に動作し始め、最初の段落がダウンロードされた後、ページ内の js、css、および画像の読み込みが開始されました。

考えるべき質問:
1. 伝送効率。1 つの伝送でできるだけ多くのものを伝送するようにし、MTU サイズに応じて調整します。 2. 同期ロード: 最初に送信されるものは、可能な限り同期してロードされる必要があります。JavaScript によってロードされるブロックを考慮する必要があります。すぐに実行する必要はありません。defer を追加するか、単にコメントアウトして、eval が入る前にページが完了するのを待つことができます。 3. 適用範囲 各テクノロジーには独自の適用シナリオがあり、たとえば、ソーシャル ネットワーキング Web サイトや検索など、約 100 ミリ秒で表示されるアプリケーションに適しています。純粋に楽しむためだけにテクノロジーを使用するのは意味がありません。適切な、類似したものを組み合わせるのが最適です。 4. ob_flush と flash は組み合わせて使用​​するのが最適です。場合によっては、flush が効果を発揮しません。

参考:

http://www.BkJia.com/kf/201202/118114.html

http://developer.yahoo.com/performance/rules.html#flush

http://www.BkJia.com/kf/201202/118116.html

http://www.BkJia.com/kf/201202/118117.html

http://baike.baidu.com/view/4601904.htm

http://www.BkJia.com/kf/201202/118118.html



http://www.bkjia.com/PHPjc/478421.html

www.bkjia.com

http://www.bkjia.com/PHPjc/478421.html技術記事 Yahoo のベスト プラクティスでは、ブラウザーがスクリプト、スタイル、画像 (...) などの静的リソースをできるだけ早くロードできるように、静的コンテンツをできるだけ早く出力し、head の後にフラッシュを呼び出すことが推奨されています。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート