動的 Web サイトでのコンテンツの表示を高速化することは非常に重要です。この記事では、いくつかの PHP 関数について詳しく説明し、PHP 出力を制御するいくつかの関数を紹介します。送信を決定する前に、すべてのコンテンツはブラウザーに直接送信されるのではなく、バッファー内にのみ存在します。これを実現するには header 関数と setcookie 関数を使用できますが、これら 2 つの関数は単なる「ちょっとしたトリック」です。強力な出力機能と比較して。これらの関数の実際の機能を見てみましょう:
void ob_start(void);
この関数は、すべての出力を内部バッファーにリダイレクトするように PHP プロセッサーに指示します。この関数を呼び出した後は、ブラウザーには出力がありません。
string ob_get_contents(void);
この関数は出力バッファを文字列に返します。これを使用して、スタックされた出力をまとめてブラウザに送信できます。もちろん、最初にバッファリングをオフにする必要があります。
int ob_get_length(void);
この関数は出力バッファの長さを返します。
void ob_end_clean(void);
この関数はバッファをクリアして閉じます。ブラウザに出力する前にこの機能を使用する必要があります。
void ob_implicit_flush ([int flag])
この関数は、暗黙的なバッファ フラッシュを制御するために使用されます。これがオンになっている場合、各 print/echo または出力コマンドの結果がブラウザーに送信されます。
2. 出力制御を使用して PHP 出力を圧縮する
始める前に、PHP4 コンパイラーが Zlib をサポートしていることを確認してください。
まず、出力バッファを初期化します:
ob_start();
ob_implicit_flush(0); 次に、すべての出力コンテンツを生成します。
print("この例は圧縮された出力です!");
ページが生成された後、次を使用します:
$contents = ob_get_contents();
ob_end_clean();
また、変数 $ を使用します。 HTTP_ACCEPT_ENCODING 「gzip, deflate」を確認するメソッド:
if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) {
// gzip の後にコンテンツを生成します
} else {
echo $contents
}
生成方法を分析してみましょうgzip 出力:
// 以下が gzip データを受信していることをブラウザに伝えます。
header("Content-Encoding: gzip");
// gzip ファイルのファイルヘッダーを表示します
// 1 回だけで十分です
echo "x1fx8bx08x00x00x00x00x00";
$Size = strlen ($contents);
$Crc = crc32($contents);
// 圧縮データ
$contents = gzcompress($contents, 9);
// CRC が書き込まれていないため、ここにコンテンツを直接出力することはできませんまだ!
$contents = substr($contents, 0, strlen($contents) - 4);
http://www.bkjia.com/PHPjc/445258.html
www.bkjia.com
true