a-blog cmsをバージョン2系から3系にアップした時は、キャッシュ設定を確認しよう
2022年12月15日(木)
※当ページのリンクには広告が含まれています
これは a-blog cms Advent Calendar 2022 15日目の記事です。
a-blog cmsは、バージョン3になってからキャッシュ関連の機能が強化され、より高速にページが表示されるようになりました。
それにともない、キャッシュに関する設定箇所も増えています。
今までa-blog cmsをバージョン2を使っていて、それをバージョン3にアップデートした場合、サイトの作り方によっては
- カテゴリーやブログごとに設定したカスタムフィールドが表示されなくなった
- エントリーを更新したのに、エントリーサマリーモジュールなどに更新内容が反映されない
といったことが起こる場合があります。
その際に、どの設定をチェックしていけば良いかについて紹介していきますね。
カテゴリーやブログごとに設定したカスタムフィールドが表示されなくなった場合
バージョン2の時には表示されていたのに、バージョン3にアップすると、カテゴリーやブログごとに作っていたカスタムフィールドが表示されなくなることがあります。
これは、「テンプレートキャッシュ」の設定が有効になっているためです。
「テンプレートキャッシュ」とは?
a-blog cmsの「テンプレートキャッシュ」が有効になっている時は、テンプレートを更新しても反映されません。
テンプレートの変更を反映させるには、
- デバッグモードにする
- 本番環境での運用時には、ダッシュボードでテンプレートキャッシュをクリアする
の方法があります。
テンプレートキャッシュ有効時に、カスタムフィールドが表示されない理由
テンプレートキャッシュを有効にしている場合は、ファイルのインクルードの記述方法に一部制限がかかります。
@include("/admin/entry/bcd/%{BCD}.html")
のように、グローバル変数を使ってファイルをインクルードする時に、使えるグローバル変数が少なくなります。
使用できるグローバル変数は、以下になります。
%{ECD}
%{BCD}
%{PBCD}
%{RBCD}
%{CCD}
%{PCCD}
%{RCCD}
%{ALIAS_CODE}
%{IS_ADMIN}
%{MODULE_NAME}
%{MODULE_ID}
%{ADMIN_PATH}
%{ADMIN_PATH_MID}
引用元:https://developer.a-blogcms.jp/document/cache/#entry-id-3709
例えば、ブログやカテゴリーごとの独自のカスタムフィールドを使っている場合、
%{BID}
%{CID}
などを使ってインクルードすることもあるかもしれません。
しかし、テンプレートキャッシュ有効時には、これらのグローバル変数は使えないので、設定を変更する必要があります。
解決方法は、
- 使用可能なグローバル変数を使う
- テンプレートキャッシュを無効にする
の2通りです。
もちろん、せっかくのキャッシュ機能を活かすのであれば、1番目の「使用可能なグローバル変数を使う」方が良いのですが、構成が変えられない場合などは、テンプレートキャッシュを無効にできます。
テンプレートキャッシュを無効にする方法
テンプレートキャッシュを無効にするには、「private/config.system.yaml」ファイルに
template_cache: off
と記載します。
これで、テンプレートキャッシュが無効になります。
エントリーを更新したのに、エントリーサマリーモジュールなどに更新内容が反映されない
バージョン3にアップ後、エントリーを更新すると、エントリーの詳細画面(Entry_Bodyモジュール)は更新が反映されるのに、エントリーサマリーモジュール等を使ったエントリー一覧ページが更新されない、といった場合があります。
その場合は、
コンフィグ>キャッシュ設定
で設定を確認します。
上の画像のように、「ページキャッシュ」が有効になっていると、キャッシュが効いてエントリーを更新しても該当エントリー以外のモジュールには更新が反映されないので、「POST時のキャッシュクリア」にチェックを入れる必要があります。
今回のまとめ
a-blog cmsをバージョン2から3にアップした際の、キャッシュ関連の注意点について、以下の2点ご紹介しました。
- カテゴリーやブログごとに設定したカスタムフィールドが表示されなくなった
- エントリーを更新したのに、エントリーサマリーモジュールなどに更新内容が反映されない
もし、自社やクライアントのサイトで同じ現象が起こった時に、チェックしてみてくださいね。