JavaScriptの結果をキャッシュする「中継君」を入れてみた。
 
 これは、Weblog(には限らないけど)で使ういろんなJavaScriptを呼び出して使うサービスの出力結果をしばらく保存しておいて、二度目の表示からはそれを使って表示を速くしようというものです。
 JavaScriptを使うサービスは、Amazon Searchや、BlogPeopleのリンクリストなどがあります。
 これらはJavaScriptsでサービスを提供しているサーバーにアクセスして毎回結果をとってくるので、相手のサーバーが混んでたりするとページ表示が遅くなります。それを防ぐために結果をしばらく保存しておくわけです。
 最初は、jscacheを使っていたが、なぜかAmazon Searchがうまく動かず、またjscacheはJavaScriptごとにcgiを設置しなくてはいけないので、面倒でした。
 そこで中継君を導入することにしてみたのですが、最初はうまく動作しませんでした。
 なぜかログに
Undefined subroutine &main::error called at /(CGIのディレクトリパス)/jc.cgi
というerrorというサブルーチンが見つからないというエラーが出るのです。
 Perlはよくわからないのですが、いろんなところを見よう見まねで、
sub error {
my($errormsg) = @_;
print $q->header(-type => $type);
print “”;
warn “Chukei Kun Error : $errormsg”;
exit;
}
というルーチンを追加したところ、ログにはBUSYというログが出ました。
 いろいろ調べた結果、根本の原因はパーミッションで、中継君がcgi-bing以下にキャッシュを出力するのですが、そこに書き込み権限を与えていなかったため、動いていなかったということがわかりました。
 一度、権限を与えて中継君が必要なファイルを書き込んだ後に、パーミッションを戻しました。
 キャッシュの書き出しを/tmpとかに変えても良かったんですけど、まあ動いているので良しとしています。





