zlib.output_compression を用いた転送量の削減を可能に

メッセージ

PukiWikiへのアクセス遅延が発生しており、その原因がネットワーク帯域であってCPUには余裕があるとわかっている場合、PHPの zlib.output_compression という機能を試すことができます。これは圧縮データを受け取ることができるブラウザに対して、データを送信する際に自動的に出力を圧縮し、それによって転送量を抑えるという機能です。転送量の削減と引き換えにCPUに負担がかかるため、現状の分析は必須です。

この件について手元の環境(FreeBSD上のPHP4.3.9およびPukiWiki CVS版)にて動作確認をしたところ、スキンからヘッダを追加出力させるだけで動作する事が確認できました。

	if(ini_get('zlib.output_compression') && 
	preg_match('/\b(gzip|deflate)\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) {
		header('Content-Encoding: ' . $matches[1]);
		header('Vary: Accept-Encoding');
	}

マニュアルを見た範囲では(本来は)この機能は透過的な機能であって、PHPコード側に改造する余地はないはずですが、実際には自動的に出力されるはずのヘッダが出力されないようです。そのため、これを設定にあわせて出力させています。

Content-Encodingを出力してくれないこの状況は、小さなコード片(例えばphpinfo()のみを含んだファイル)でも再現できるため、PHP本体側や他の設定との兼ね合いにその理由があるように思っています。

この機能はphp.iniや、(Apacheのhttpd.confに許可されている場合は) .htaccess から On にすることができます。そのため、.haccessに以下の設定を追加しておきました。(デフォルトでは無効)

## Using zlib.output_compression per directory (via .htaccess),
## needs 'AllowOverride Options' at httpd.conf.
#php_flag zlib.output_compression On

ちょっと確認: 類似の技術: mod_deflate

そのほか

画像が壊れる?

試してみた 試してみてね


(開発日記/2005-01-26)




*1 なお、devサイトのメンテナンスは現在もぱんださんがなさってます
*2 Simple Machines Forum
*3 人のことはあまり言えないのですが、別のサイトでも指摘されていましたよね

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-02-24 (火) 17:08:33
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 8.401 sec.

SourceForge