web-dev-qa-db-ja.com

zlib圧縮の問題

私のサイトでzlib圧縮を実行中にいくつかの問題があります..

まず、php_value output_handler ob_gzhandlerを使用して.htaccessでzlib圧縮を有効にすると、次のエラーが数千行表示されます。

PHP警告:ヘッダー情報を変更できません-ヘッダーは行0でUnknownに既に送信されています

空白に使用されるすべてのファイルと、16進エディタで表示されないはずのその他の文字をすべてチェックしましたが、.htaccessでzlibをオンにすると、そのエラーを抑えることができませんでした。

したがって、私はphp.iniファイルでzlib圧縮をオンにしようとしました:

zlib.output_compression "1"
zlib.output_compression_level "1"

しかし、圧縮チェッカーから、圧縮が有効になっていないため、正しい形式ではないようだと言われました。

2
Dan

最初に心に留めておくべきことは、圧縮チェッカーは時々さまざまな理由で存在するため、警告を大量に受け取ることです。スタックオーバーフローで最近言ったように、ySlowは福音ではありません(しかし、私は自分で好きです)。

PHPでzlib.output_compressionを使用するのではなく、Apacheでmod_deflateを有効にすることをお勧めします。これにより、静的ファイルもキャッチおよび圧縮されます(たとえば、提供する静的テキストファイル/ csv/xmlがある場合)。画像やビデオのようなほとんどのマルチメディアを圧縮したくないことを覚えておいてください。ファイルサイズの削減(実質的にゼロ)と比較すると、オーバーヘッドは比例して非効率的です。

Httpd2に関連する例を次に示しますが、 選択できるオプションは他にもたくさんあります(マニュアルを確認してください)

<Location />
 # Insert filter
 SetOutputFilter DEFLATE

 # Netscape 4.x has some problems...
 BrowserMatch ^Mozilla/4 gzip-only-text/html

 # Netscape 4.06-4.08 have some more problems
 BrowserMatch ^Mozilla/4\.0[678] no-gzip

 # MSIE masquerades as Netscape, but it is fine
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 # Don't compress images
 SetEnvIfNoCase Request_URI \
 \.(?:gif|jpe?g|png)$ no-gzip dont-vary

 # Make sure proxies don't deliver the wrong content
 Header append Vary User-Agent env=!dont-vary
</Location>
5
msanford