HTTPサーバーとWeb開発

48. OS/400 V5R2M0 からのサーバー・サイドのキャッシュ(FRCA)

FRCA(Fast Response Cache Acceralator)とはOS/400 V5R2M0 から使用可能に
なったサーバー・サイドのキャッシュの手法である。
FRCA とは V5R2M0 からの NFC(Network Fast Cache) を使ってHTMLを
MI (Machine Interface)レベルでハッシュ・テーブルというところへ、ある指定した一定時間だけ
HTMLコンテンツを保管して、ブラウザからの要求に対して HTTPサーバーに制御を渡す前に
FRCA が応答を返す仕組みになっている。

先の解説では「一般的に CGI やJSP & Servlet の出力結果はキャッシュされない。」と
述べたが FRCA は CGI などを含むすべてのHTMLをサーバー・サイドとしてキャッシュする。
それではデータ・ベースの変更に対してどのように対応されるのであろうか?
データ・ベースの中身で変更されているのに古いコンテンツがブラウザに戻されてしまったので
あれば、変更が反映されなくなってしまう。

ここで IBM は面白い技術を適用した。
それはTCM(Triggered Cache Manager)と呼ばれるトリガー機能である。
あるデータ・ベースに変更があったときにはトリガー・プログラムをデータ・ベースに登録しておけば
データ・ベースの変更に伴ってトリガー・プログラムが起動されるのは、OS/400 の機能の
ひとつである。

簡単な例では商品レコードをユーザーが削除しようとするとトリガーによって在庫レコードが
あるかどうか検査して、在庫がまだあるのであれば削除操作を中断させることができる。
これと同じようにトリガーによってキャッシュをクリヤーさせようというのである。
なるほどとうなずきかける前に、各データ・ベースには漏れなくトリガーを配置しなければ
ならない
という膨大で間違いの許されない条件が増えたことに注意しなければならない。
これは残念だが iSeries400 や実際の業務運営にあまり理解や経験の無い開発者が FRCAを開発した結果であろうと予測される。
トリガーを設定しなければ FRCA はほとんど役には立たない。