ホームページ  >  記事  >  バックエンド開発  >  PHP の ob_start() を使用してブラウザのキャッシュを制御する_PHP チュートリアル

PHP の ob_start() を使用してブラウザのキャッシュを制御する_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:44:55999ブラウズ

出力制御関数は、header() または setcookie() を使用して送信されるファイル ヘッダー情報には影響せず、echo() および PHP コードと同様のデータ ブロックにのみ影響します。
出力制御の一般的な印象を与えるために、まず簡単な例を見てみましょう:
例 1.

コードをコピーします コードは次のとおりです:

ob_start();バッファを開く
echo "Hellon"; //出力
header("location:index.php"); //ブラウザをindex.phpにリダイレクトします
ob_end_flush(); //コンテンツ全体をブラウザに出力します
?> ; header() 関数を知っている人は誰でも、この関数がファイル ヘッダーをブラウザーに送信することを知っていますが、この関数を使用する前に出力がある場合 (スペース、キャリッジ リターン、改行などの空の出力を含む)、プロンプトが表示されます。エラー。最初の行の ob_start() を削除してこのプログラムを実行すると、次のエラー メッセージが表示されることがわかります。「ヘッダーはすべて送信準備ができました。」ただし、ob_start を使用すると、エラー メッセージは表示されません。その理由は、バッファーが開かれたときに、echo 以降の文字がブラウザーに出力されず、flush を使用するまでサーバー上に出力されないためです。または ob_end_flush なので、ファイル ヘッダー出力エラーは発生しません。
1. 関連機能の紹介:
1. フラッシュ: バッファーと出力の内容を更新します。
関数形式: flash()
説明: この関数は頻繁に使用され、非常に効率的です。
2. ob_start: 出力バッファを開きます。
関数形式: void ob_start(void)
説明: バッファがアクティブ化されると、PHP プログラムからのファイル以外のヘッダー情報はすべて送信されず、内部バッファーに保存されます。 。バッファの内容を出力するには、ob_end_flush() または flash() を使用してバッファの内容を出力します。
3、ob_get_contents: 内部バッファの内容を返します。
使用法: string ob_get_contents(void)
説明: この関数は、出力バッファがアクティブ化されていない場合、現在のバッファの内容を返します。
4. ob_get_length: 内部バッファーの長さを返します。
使用法: int ob_get_length(void)
説明: この関数は、出力バッファーがアクティブ化されていない場合、ob_get_contents と同様に現在のバッファーの長さを返します。その後、FALSE を返します。
5. ob_end_flush: 内部バッファの内容をブラウザに送信し、出力バッファを閉じます。
使用法: void ob_end_flush(void)
説明: この関数は、出力バッファーの内容 (存在する場合) を送信します。
6. ob_end_clean: 内部バッファの内容を削除し、内部バッファを閉じます。
使用法: void ob_end_clean(void)
説明: この関数は内部バッファの内容を出力しません。
7. ob_implicit_flush: 絶対フラッシュをオンまたはオフにします。
使用方法: void ob_implicit_flush ([int flag])
注: Perl を使用したことのある人なら誰でも、$|=x の意味を知っています。 ob_implicit_flush 関数は、その関数と同じです。デフォルトでは、絶対出力をオンにした後、各スクリプト出力がブラウザーに直接送信され、flush() を呼び出す必要はありません。理解:
1. フラッシュ関数について:
この関数は PHP3 で登場し、ブラウザのキャッシュを更新する非常に便利な関数です。フラッシュを説明するために、非常に明らかな動作効果を持つ例を示します。
例 2.



コードをコピーします
コードは次のとおりです: for($i = 1; $i <= 300; $i++ ) print(" ");
// この文は非常に重要です、キャッシュは一定のサイズに達した場合のみブラウザから出力できる構造になっています
// つまり、キャッシュの内容が一定のサイズに達しない場合は、プログラムの実行が完了するまでは出力されません。
// テストの結果、このサイズの下限は 256 文字であることがわかりました。これは、今後キャッシュによって受信されるコンテンツが
// 継続的に送信されることを意味します。
For($j = 1; $j <= 20; $j++) {
echo $j."
"; // これにより、キャッシュ内の新しいコンテンツが絞り出されて表示されます。ブラウザに移動します
sleep(1); //プログラムを少しの間「スリープ」させます。これにより、効果をより明確に確認できるようになります
}
?>



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

www.bkjia.com
tru​​e

http://www.bkjia.com/PHPjc/320445.html技術記事出力制御関数は、header() または setcookie() を使用して送信されるファイル ヘッダー情報には影響しませんが、echo() や PHP コードと同様のデータ ブロックにのみ影響します。 まずは簡単なものからあげましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。