Railsに限った話ではないが、Webアプリケーションのパフォーマンスにおいてキャッシュを用いることは多々ある。最近ではmemcachedを利用することが多いが、キャッシュしずらいデータもある。それはログイン後のデータなどユーザごとに異なる情報を表示するケースだ。

ピクチャ 16.png

ESIタグの内容を実行して表示する via 「Railsの画面生成を10倍高速化する方法」をESIで実装する [Gatherup]

 

ユーザごとに情報が異なる場合、キャッシュを活用するのは難しい。それを解決してくれるのがESIと呼ばれる仕組みだ。

今回紹介するオープンソース・ソフトウェアはMongrel-ESI、Mongrelを使ったESI実装だ。

Mongrel-ESIは通常のキャッシングと異なり、動的なページに対しても有効なキャッシングを提供する。SSIのようにページに特定のタグを埋め込む形でWebサーバの出力を最後に変換して表示することができる。アクションを指定して、Rails側でアクションを実行後に値を埋め込むことができる。もちろんその後はキャッシュされる。

ピクチャ 15.png

コマンドラインのヘルプ

 

さらにRailsであればrender :partialの指定としてESIを利用できる。ESIのデータはTCPを使ってやり取りされるものなので、ESI側は拡張しやすく、スケールメリットが出やすい。

バックエンドにはメモリの他、memcachedを利用することもできる。まだ成熟していないが、大規模なキャッシュシステムを構築する際に試してみたいソフトウェアだ。

 

**mongrel-esi -Google Code

 **
http://code.google.com/p/mongrel-esi/