Cakephpで静的サイトマップファイルを作成しておく
サイトマップの生成でCakephpにおける静的サイトマップファイルの作成方法をエントリーし、Componentの使い方でまとまった処理をコントローラから切り離してコードを管理する方法についてエントリーしてみた。
上の2点を参考にサイトマップの生成処理をCakephpでコンポーネント化することができる。
コンポーネント化した処理は実行させなければならない
ロボットの判定処理などのメモリ完結型の処理は負荷が軽めなのだが、静的サイトマップファイルの作成というファイルシステムを利用する処理の場合にはロボット判定処理よりも負荷が高くなる。負荷が高めの処理についてはバッチ化してシステム負荷の少ない時間帯に実行したりする工夫がなされる。
バッチ化ではなくランダム実行でも負荷を少なくできる
ランダム実行とは、リクエストの多いページをブラウザで閲覧した場合に毎回ではなく、ランダムに処理を行うことを指す。具体的には、個別の商品ページにアクセスがあった場合に、毎回ではなく、
3回に1度
4回に1度
の確率で実行することをいう。静的サイトマップの作成処理を毎回行ってファイルシステムを利用するのはアクセス数が多くなってくると問題になる場合があり、そのようなトラブルを回避する工夫が必要になる。工夫といってもPHPを利用すれば簡単に対応できる。以下がその例
$r = mt_rand(0, 10); if( $r < 2 ) { echo $this->GenSitemap->gen(); }
$rには、リクエストの度に値が入れ替わる。その値が2より小さければサイトマップを生成するという処理になる。
実際には上のやり方でも無駄にサイトマップを生成することにはなるだろうが、何もしないよりは負荷を抑えることができる。また、バッチ処理の場合よりもある程度リアルタイム性を備えることができるという特徴もある。