2012-04-03 15 views
4

それはどんな違いが何を作るんon_start()を使用して、ob_start(); PHPで?

// ENABLE GZIP COMPRESSION 
ob_start(); 
ob_start('ob_gzhandler'); 

またはこのまったく同じである、

// ENABLE GZIP COMPRESSION 
ob_start('ob_gzhandler'); 

は、私は私のウェブサイトは少しスピードアップするようだ最初の例と同じようにお願いします。

ありがとう

+0

FYI、PHP-FPMから実行されるPHPは自動的に出力バッファリングを開始します。それから、Nginx/Apacheはそれをgzipsしてユーザに送ります。 – Xeoncross

答えて

6

次のいずれかの実行する必要があります。

ob_start(); 

か:

ob_start('ob_gzhandler'); 

両方ではありませんが。ユーザーエージェントは、GZIPエンコーディングを受け入れるかどうかを確認するために$_SERVER['HTTP_ACCEPT_ENCODING']を確認することができます。

if(strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false) 
    ob_start('ob_gzhandler'); 
else 
    ob_start(); 
+2

クライアントがgzipを受け入れるかどうかを実際に確認する必要はなく、ハンドラはこれを行い、受け入れられない場合はgzipを使用しません: '注: PHP 4.0.4では、ob_gzhandler()エンコードされたデータを、圧縮されたWebページをサポートするWebブラウザに送信します。 ob_gzhandler()は、ブラウザが受け取るコンテンツ・エンコーディングのタイプを決定し、それに応じて出力を返します。 – drew010

0

最初の2つの出力バッファリングが開始されます。メモリの浪費。

0

違いはありませんまったく。 ob_start()はスタック可能です。つまり、2番目のob_start()は、フラッシュされると、その内容を最初のob_start()に追加します。

関連する問題