メール不達のお知らせ

2018年11月1日まで、本サイトのお問い合わせメールが機能しておらず、メールを受け取ることができませんでした。この期間内にお問い合わせ頂いた方は、大変お手数ではございますが、再度お問い合わせページからご連絡ください。

Joomla! Tips

基本設定のキャッシュ機能とキャッシュプラグインの違い

Joomla!にはキャッシュと呼ばれる機能があります。ページにアクセスするたびにプログラムを実行するのではなく、プログラムの実行結果を保存しておき、それをブラウザに返す事でサーバの負荷を低減したり、サイトを高速化したりする機能です。

Joomla!の「基本設定(Joomla!1.6の場合はグローバル設定)」には、このキャッシュの有効/無効を切り替えたり、キャッシュする時間などを設定できる項目があります。この機能は有名ですね。
tips_cache01

実はその他にもJoomla!標準のキャッシュプラグインがあるのはご存じでしょうか。「エクステンション」→「プラグイン管理」を選択すると、「システム - キャッシュ(System - Cache)」と表示されているプラグインがそれです(デフォルトで無効になっています。)

どちらも「キャッシュ」という名前が付いていますが、それぞれ何が違うのでしょうか。かなり前から疑問だったのですがJoomla!のヘルプにはたいした情報が無く、当サイトの会員様よりご質問頂いたことをきっかけに詳しく調べて見ました。

Joomla!のキャッシュには2つある

Joomla!のデベロッパーであるAndrew Eddie氏の記事にズバリ答えが書いてありましたので、英語が読める方はこちらを読んだ方が確実です。

Joomla Caching Explained - Page, View and Module Caching - How to speed up your Joomla Web site

ページ全体をキャッシュする「ページキャッシュ」

Joomla!標準のプラグインである「システム - キャッシュ(System - Cache)」は、アクセスされたページを丸ごとキャッシュします。つまり誰かがページへアクセスすると、そのページ全体がキャッシュされ、次にアクセスした人は前回キャッシュされたページを見ることになります。

キャッシュされたページは /cache/pages に保存されます。プラグインを有効にした後で適当なページにアクセスし、このフォルダを開くとphpファイルが生成されています。そのファイルを開くと、html要素、body要素などが並んだ単なるhtmlファイルと同じ事がわかります。

ページキャッシュは、ページ全体をキャッシュするので大幅なパフォーマンスの向上が期待できます。

またページキャッシュには次のような特徴があります。

  • ログインしているユーザには効かない。ログインしていないゲストユーザにのみ。
  • URL毎にキャッシュが生成されるので、どんなコンポーネントやモジュールを使っていてもOK
  • 記事のヒット数が増えなくなってしまう。
  • Javascriptなどを使用している動的なコンテンツ(Google Analytics や Google Adsenseなど)は問題なく動作する(そりゃブラウザ側で実行されるから当たり前)。

ページの一部をキャッシュする「ビューキャッシュ」と「モジュールキャッシュ」

基本設定(Joomla!1.6の場合はグローバル設定)にあるキャッシュ設定がこちらです。「ビューキャッシュ」とは、簡単に言えばサイトのメイン部分(コンポーネント部分)のキャッシュです。「モジュールキャッシュ」はその名の通りモジュール部分のキャッシュです。つまりページ全体ではなく、それぞれページの一部をキャッシュします。

それぞれのキャッシュには次のような特徴があります。

ビューキャッシュ

  • 全てのコンポーネントでビューキャッシュに対応しているわけではないので、キャッシュされないコンポーネントもある。
  • ビューキャッシュの効果があるのはログインしていないゲストユーザのみ。
  • なぜか「Blogカテゴリレイアウト」のページだけはキャッシュしてくれないらしい。
  • ビューのキャッシュもURL毎に生成される。

モジュールキャッシュ

  • モジュール毎にキャッシュするかを設定できる(「グローバルを使用」は基本設定に従うということ)。
  • 画像をランダムに表示したり動的なコンテンツを表示するようなモジュールは、キャッシュを無効にするか、キャッシュ時間を短くすること。
  • モジュールのキャッシュはゲストユーザでもログインユーザでも効く。

これらは/cacheフォルダに、com_xxxxxxやmod_xxxxxのような名前でフォルダが作成され、そこにキャッシュが保存されます。

両方有効にしたらどちらが優先されるか

ページキャッシュが優先されます。ページキャッシュが存在すれば、それをブラウザに返します。ページ全体がキャッシュされてしまうので、モジュール毎のキャッシュ設定は意味がなくなります。

じゃあどちらを有効にしたら良いの?

ほとんど更新しないようなサイトであればページキャッシュ(キャッシュプラグイン)、それ以外のサイトはビューキャッシュとモジュールキャッシュ(基本設定のキャッシュ)という所でしょうか。ちなみに当サイトでページキャッシュを有効にすると、デザインがぶっ壊れるという現象が起きているので、ページキャッシュを有効にする場合は注意した方がよさそうです。

【Joomla!が使えるレンタルサーバー】
 

タグ: Tips, キャッシュ, 高速化

自分用のリンク

ちょくちょくアクセスするページ。自分用です。

お仕事募集

Joomla!に関するお仕事の依頼、エクステンションの翻訳、トラブルシューティングなどございましたら、こちらからお問い合わせください。