永田順伸のブログ

osCommerceを軽快に3 ページキャッシュ

データベースを調整すると驚くほど処理が速くなるが、ページキャッシュを適切に設定するとさらに速くなる。

ページキャッシュは、カテゴリメニューなどに使用され、データベースの負荷を下げる機能がある。たとえば、トップページのカテゴリメニューは画面が表示されるたびにデータベースから値を取得して、PHPで整形してHTMLとして正しい形式にして出力される。

他のページを見て、再度、トップページを表示させても同じ処理が実行される。この部分だけでもアクセスが多いサイトだと負荷がかかる。このカテゴリメニューの部分だけをはじめの処理のときにファイルに保存して、2度目にこのページを表示するときはデータベース処理やPHPでの整形処理は省いてファイルから直接読み出して、処理を速くする機能がページキャッシュだ。

osCommerceでは、ページ全体をキャッシュせず、負荷が予想される部分にキャッシュ機能が適用されている。
設定するには、基本設定の「ページキャッシュ」画面を表示させて、「キャッシュを使用」を「true」にする。
注意が必要なのが「キャッシュ・ディレクトリ」に設定するパスだ。

お客様から依頼を受けて調べてみるとまったくページキャッシュが使用されていないことが多い。動作しない理由の大半がパスが適切ではないためだ。この部分が適切に設定されていないとページキャッシュは動作しない。
ここにはページキャッシュ用のファイルを格納するディレクトリ名を設定する。Webから見たパスではなくて、OSのファイルシステムから見たフルパスを設定する。設定したパスはプログラム側から書き込めるように書き込み権限を追加しておく。
正常に動作すると、ブラウザでページを閲覧することで、キャッシュ用ファイルがディレクトリ内に作成されていく。ファイルが生成されていれば設定は成功だ。

これから先は、PHPのプログラミングがわからないと難しいが、トップページの状況に応じてページキャッシュの範囲を広げるとさらに効果的だ。
osCommerceには、処理時間を計測する機能があるので、これでページごとの処理時間がわかる。

最近の私の経験では、トップページの表示に2秒かかっていたがインデックスの追加で0.241秒になり、ページキャッシュを拡張して対応することで、0.063秒になった。

モバイルバージョンを終了