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