昔,カモランドをWiki化するにあたって,ページ生成処理のせいでカモランドの表示で遅くなってしまうのを抑えるために,Apacheのmod_cacheを使ったキャッシュを行った.

mod_cacheでWiki(CGI)の高速化

それで,俺はFireFoxをほとんど使わないので,これでまぁまぁうまくいってるものだと思いこんでいたのだが, ふぎゃー,FireFoxを使ってみると,普通にリロードしただけでApache側のキャッシュリフレッシュがかかるんだな.

単純リロードでそういうヘッダを送るFireFoxが悪いのか,Apacheが悪いのかよくわからんが,それが現実のようだ.

またIEを使った場合でも,proxy経由だとそのproxyの状況によって単純リロードでもキャッシュリフレッシュがかかってしまうことを確認している.

...こういう状況を何とかするために,PyukiWikiを改造してキャッシュ機能を付けた.

(↑説明図.今回(2)の経路ができたということ.解説ページは → PyukiWikiにキャッシュ機能をつける)

WikiのCGIプログラムがSTDOUTに出力しているHTMLをまるごとファイルに保存して,同じページが要求されたときはそのファイルの内容を出力するという話.

これを実装するにあたって,

  • プログラムがSTDOUTへ出力している内容を,どうやってファイルに保存するのか?

というのが最大の問題だったが,perlの場合は

open (STDOUT, "|tee cache.txt");
 〜STDOUTへの出力処理〜
close(STDOUT);

こんな感じでSTDOUTをteeにパイプすれば,出力内容を別ファイル(これならcache.txt)に複製できた.

これは便利だ.


© 2023 KMIソフトウェア