2009-12-07 32 views
24

ほとんどのサイトでは、帯域幅を節約するためにコンテンツを圧縮したいと考えています。しかし、PHPを実行しているApacheサーバには、with PHPまたはApacheを使用する2つの方法があります。だからあなたのサーバー上でより速くて簡単ですか?例えばPHPでコンテンツを圧縮するob_start()vs Apache Deflate/Gzip?

、PHPで私はそれを可能にするために、私のページの先頭に次の関数を実行します。

/** 
* Gzip compress page output 
* Original function came from wordpress.org 
*/ 
function gzip_compression() { 

    //If no encoding was given - then it must not be able to accept gzip pages 
    if(empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { return false; } 

    //If zlib is not ALREADY compressing the page - and ob_gzhandler is set 
    if ((ini_get('zlib.output_compression') == 'On' 
     OR ini_get('zlib.output_compression_level') > 0) 
     OR ini_get('output_handler') == 'ob_gzhandler') { 
     return false; 
    } 

    //Else if zlib is loaded start the compression. 
    if (extension_loaded('zlib') AND (strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)) { 
     ob_start('ob_gzhandler'); 
    } 

} 

other optionは、Apache deflate or gzipvery closeである両方)を使用することです。それらを有効にするには、このようなものを.htaccessファイルに追加することができます。

AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php 

PHPは(PHPによってロードされなければならない)スクリプト言語であるので、私はApacheの方法は1であろうと仮定します)より安定と2)より速いです。しかし、仮定は実世界ではあまり使われていません。

結局のところ、巨額の財政支援窓口には... uhがあると思われます。

答えて

14

実行中... 60M /ユニーク/日を処理する多数のウェブサーバー。通常これは言及する価値はありませんが、あなたの質問は経験に基づいているようです。

私たちはApacheで実行します。もう一方の端から出てくるものは、あなたが選ぶ方法にかかわらず同じです(または問題にならないほど十分です)。

は、我々はいくつかの理由のためにApacheを選択します。

  • ゼロメンテナンスは、我々はそれをオンに。誰も何らかのケースストラクチャを維持する必要はありません
  • 性能、私たちのテストサーバーでは、Apacheが作業をわずかに改善しました。
  • ApacheはPHPだけでなく、出力フィルタをすべてに適用します。他の種類のコンテンツが同じサーバー上で提供されているいくつかの場面であり、私たちは私たちの.cssを圧縮したいと警告の

一つの単語を.jsファイル思い、一部のブラウザまたは他のアプリケーションが意図的に示すクライアントヘッダをマングルその圧縮がサポートされています。クライアント側のセキュリティ(ノーフォンインターネットセキュリティなどのアプリケーションを考える)の面で仕事を楽にする人もいます。これを無視するか、余分な場合を追加して通常のように要求を書き直すことができます(ブラウザーはそれをサポートしています。アプリケーションまたはプロキシーは、単に自分の人生を楽にしてくれるだけです)。

また、以前に出力をブラウザに送信するためにflush()コマンドを使用していて、圧縮を適用している場合は、文字列の最後に空白を挿入して、サーバーに早期にデータを送信させる。

+0

+1:私はあなたのトラフィックはほとんど処理していませんが、サーバーがそれを処理することも好きです。 1つまたは2つの注意点があります。特定の種類のサウンドファイルを圧縮しないでください。そうでない場合、メディアプレーヤーがそのファイルを圧縮します。これには、mp3ファイルを含むWindows Media Playerが含まれます。 – Powerlord

+0

この問題はMedia Player 8で発生しましたが、今修正されている可能性があります。 – Powerlord

+0

一般的に、私はtext/*型の項目だけを圧縮し、残りの部分を得るためには、いくつかのコンテンツタイプ(application/jsonなど)を選択します。 – preinheimer

関連する問題