非常に使い勝手が悪いCodeIgniterの各種キャッシング機能の保存単位について調べてみました。

キャッシングクラス

CodeIgniterのキャッシングクラスは…

  1. 任意のキャッシュIDを指定して保存・削除ができる
  2. キャッシュフォルダに直接保存される
  3. サブフォルダ分けは一切なされない
  4. キャッシュに有効期限をつけられる

データベースキャッシュ

CodeIgniterのデータベースキャッシュは…

  1. 実行されたSQLクエリ文をmd5ハッシュ化したのがキャッシュID
  2. フォルダ分けは実行中のコントローラ名・メソッド名から決まる
  3. キャッシュの削除はフォルダ単位のみ
  4. キャッシュIDを指定して個別に削除することはできない
  5. キャッシュに有効期限はつけられない

出力キャッシュ(Webページのキャッシュ)

CodeIgniterの出力キャッシュは…

  1. キャッシュIDはリクエストされた完全なURLをmd5ハッシュ化したもの
  2. つまり$config['base_url'], $config['index_page'], uri::uri_string()を足したものをmd5ハッシュ化したもの
  3. キャッシュフォルダに直接保存される
  4. サブフォルダ分けは一切なされない
  5. キャッシュに有効期限をつけられる
  6. キャッシュを削除するには有効期限を待つだけ
  7. キャッシュIDを指定して個別に削除することはできない

というわけで、

極小規模なサイトであれば、キャッシュ機能は有効に活用できそうですが、中規模・大規模のサイトになると②データベースキャッシュは一切使い物にならず、①③はフォルダ分けされなかったり有効期限を待つだけで好きなタイミングに削除できなかったりで、ページ数が増えるにつれて逆に負荷が増えてしまう仕様となっています。

PR