Sponsored Link

CGI負荷削減方法


1)gzipによる転送量削減(結果CPU負荷も削減)及び高速化。   
(サーバーにより導入が出来ない場合も...)
2)jcode.pl(日本語ライブラリー)の変更による負荷削減及び高速化。
(こちらは簡単に導入出来ます)


MSTの場合はmessage.cgiです。その他CGIでも流用可能です。
チャット&BBSなどに非常に有効な手段です。
(転送量を通常の
10分の12分の1に出来ます)
サーバの転送にかかるCPU負荷も抑えることが出来ます。
転送の高速化にもなります。(導入して損する事は有りません)

まずサーバー側から「gzip」のパスを聞いて下さい。
(ほとんどのサーバーが使える筈です。使えない場合は諦めて^^;)
「sh」が使えるならgzipチェッカーでPASSを調べてみてください。

いちお-....
IE4.0以降、NN4以降、それに順ずるタブブラウザーに対応
つまり
約97%のブラウザーに対応してます。
念の為..対応してないブラウザーにもプログラム的処理をしてます。
(これにより
100%表示可能にしてます)

gzipによる 圧縮転送
Content-type: 」を吐いている部分を入れ換える。
(具体的には)
print "Content-type: text/html\n\n";
の部分を入れ替える。
(MSTの場合...
message.cgi154行目を差し替える)


gzipのパスが「
/bin/gzip/」の場合
------------------------------------------
$gzip = '
/bin/gzip/';
if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /gzip/ && $gzip ne ''){
print "Content-type: text/html\n";
if($ENV{'HTTP_ACCEPT_ENCODING'} =~ /x-gzip/){
print "Content-encoding: x-gzip\n\n";
}else{
print "Content-encoding: gzip\n\n";
}
open(STDOUT,"| $gzip -1 -c");
}else{
print "Content-type: text/html\n\n";
}
------------------------------------------

【補足その1】
print "Content-type: text/html;charset=Shift_JIS\n";
の場合では

3行目の
print "Content-type: text/html\n";を
print "Content-type: text/html;charset=Shift_JIS\n";
11行目の
print "Content-type: text/html\n\n";を
print "Content-type: text/html;charset=Shift_JIS\n\n";
にする。

【補足その2 Winサーバーの場合】
3行目
print "Content-type: text/html\n";を
print "Content-type: text/html\r\n";に
5.7行目
print "Content-encoding: x-gzip\n\n";と
print "Content-encoding: gzip\n\n";を

print "Content-encoding: x-gzip\r\n\r\n";
print "Content-encoding: gzip\r\n\r\n";に
11行目
print "Content-type: text/html\n\n";を
print "Content-type: text/html\r\n\r\n";に
変えると幸せかもしれません。
どうやら改行コードがWinサーバだと違う模様。

コレだけの方法で負荷が削減される。
配布されてるCGIにはまず当然の様に書かれてません
(理由はサーバーによりパスが異なる&負荷削減は考えられてない?)

高負荷警告を受けてるHPでは導入を勧めます。
負荷削減方法その2 (jcode.plをsjis特化に変える)
デフォルトだと「日本語ライブラリー」が「jcode.pl」で「euc」にも対応しています。
ならば「jcode.pl」を「sjis」のみに特化した物を使えば軽くなる筈。
て事で「sjis」特化のjcodeLE.plperl5以降仕様に改造した物を配布いたします。
【注意】
私が作ったjcodeSE2.plは「perl5以降」を対象に再々改造しております。
(私がかつて使っていたサーバーでjcodeLE.plがそのままでは使えなかった為)
jcodeLE.plゆいちゃっと様の改造制作sjis特化日本語ライブラリーです。
jcode.pl歌代 和正氏制作の優秀な日本語ライブラリーです。

コメントなどの約60%程度負荷削減が出来るかと思われます。
表示速度が体感でも速くなります。
jcode.plを使うCGIでsjisのみしか利用しないのならば
このスクリプトを利用できます。


require 'jcode.pl';
と通常は書いて有るのを
require 'jcodeSE2.pl';
と修正して
下記からplをダウンロードしてください。




【MSTの場合の改造箇所】


sub/msvslib.plの729行目辺りの
--------------------------------------------
#--------------------#
#/*@*/デコード処理 #
#--------------------#
sub decode
{
# 日本語ライブラリの読み込み
require 'data_ini/jcode.pl';
--------------------------------------------

--------------------------------------------
#--------------------#
#/*@*/デコード処理 #
#--------------------#
sub decode
{
# 日本語ライブラリの読み込み
require 'data_ini/
jcodeSE2.pl';
--------------------------------------------
と変更



admin.cgi の12行目辺りの
--------------------------------------------
# 日本語ライブラリの読み込み
require 'data_ini/jcode.pl';
--------------------------------------------

--------------------------------------------
# 日本語ライブラリの読み込み
require 'data_ini/jcodeSE2.pl';
--------------------------------------------
に変更

data_iniファイル内に「jcodeSE2.pl」を入れる。


jcodeSE2(ZIP形式)

こちらのファイルは通常は中に記載されてるコメントを削除している為
(少しでも軽くする為に)
著作権は下記に有る事を併せて書いておきます。
再配布は禁止です。
(著作権表記がファイル内に無いので責任が持てなくなります)

【著作権】
jcode.plKazumasa Utashiro氏
改造版(jcodeLE.pl)ゆいちゃっと
再改造版perl5以降仕様(jcodeSE2.pl)御影樹璃