*zlib.output_compression を用いた転送量の削減を可能に [#v3fa233c]

-ページ: BugTrack
-投稿者: [[henoheno]]
-優先順位: 普通
-状態: 提案
-状態: 着手
-カテゴリー: 本体新機能
-投稿日: 2004-11-01 (月) 21:53:35
-バージョン: 

**メッセージ [#n145bdcd]


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 にすることができます。

- [[cvs:skin/pukiwiki.css.php]] (1.6)
- [[cvs:skin/pukiwiki.skin.php]] (1.15)
- [[cvs:.htaccess]] (1.8)


----
-zlib.compression 利用中に、Accept-Encoding: gzip あるいは deflate を持たないブラウザがアクセスしたときにはheaderを出力しないように、少々修正しました。 -- [[henoheno]] &new{2004-11-01 (月) 21:55:57};
-- [[cvs:skin/pukiwiki.css.php]] (1.7)
-- [[cvs:skin/pukiwiki.skin.php]] (1.16)
-関連して、手元の環境(FreeBSD + Apache2.0.52_1 + PHP 4.3.9)では ref およびattachプラグインが出力する画像が壊れます。マニュアル通りの対処法としては ini_set(zlib.compression, 'Off'); を実行すると良いはずなのですが、とりあえず私の環境では(FALSEが帰って来ており)動作を確認できていません。 -- [[henoheno]] &new{2004-11-01 (月) 22:42:42};
-- PHP 4.3.2 以降、Content-Type が image であるものについては自動的に compression がoffになる、という動作が(も)有効に働いていない予感。
-- http://nxweb.dyndns.org/hiki.cgi?PHP-Changes-4.3.2
-とりあえずLinuxなどでもテストしてみないといけなそうですね。 -- [[henoheno]] &new{2004-11-03 (水) 16:19:30};

#comment


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

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

SourceForge