このサイトは、Drupal で構築していますが、Boost モジュールというのを使ってキャッシングを行い高速化しています。Boost モジュールは、よくあるキャッシュモジュールのようにコンテンツのライフタイムを指定し、その期間が過ぎるとキャッシュを作り直すようになっています。これを、ノードを更新したときにすぐにキャッシュを再作成するTipsがあったのでやってみました。
これはDrupalのサイトのBoost Tips & Tricks や、Drupal 6 Performance Tipsという本にも書かれています。
まず、Rules というモジュールをインストールします。このモジュールは、イベントとそのイベントが起きたときのアクションを定義することができます。Rulesを使って、ノードが保存されたというイベントに対して、 Cronを実行するというアクションを定義すればよいのです。
Rules の設定メニューから、新規にルールを作成し、”Contents is going to be saved” というイベントに対して、カスタムPHPコードを実行するというアクションを設定します。そして、実行するPHPコードは以下のようにします。
global $base_root, $base_path;
drupal_http_request($base_root . $base_path . 'cron.php');
さらに、Boost の設定メニューで、”Check database timestamps for any site changes. Only if theres been a change will boost flush the expired content on cron.” にチェックを入れます。
これでノード保存時にすぐさまキャッシュが再構築されるようになりました。また、この仕組みがあれば通常のライフタイムはうんと長くしてもよいのではないかと思い、Boostの設定を16週間にしてみています。