テンプレートキャッシュについて

テンプレートキャッシュについて詳しくご紹介します。

テンプレートキャッシュを有効にする

「private/config.system.yaml」に以下の記述をすると機能が有効化されます。

template_cache: on

3系の「config.system.yaml」はデフォルトで、テンプレートキャッシュが有効になっています。よって2系からのアップデートの場合は、通常「config.system.yaml」を更新しないため、テンプレートキャッシュはオフの状態となっております。

また「DEBUG_MODE」時はテンプレートキャッシュが有効になりません。 テンプレートキャッシュを使いたい場合は「config.server.php」で「DEBUG_MODE」を「0」にしましょう。

define('DEBUG_MODE', 0);

テンプレートキャッシュが使える条件(制限事項)

テンプレートキャッシュを有効にすると、テンプレートの作り方に制限が設けられます。
具体的には、インクルード文の中に使用できるグローバル変数が限定されます。

<!-- 以下のようなインクルード文で使用するグローバル変数が限定されます。 -->

@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}
  • %{CATEGORY_LEVEL}

以下のような 正規表現 で全文検索すると、インクルード文の中でグローバル変数を使っている箇所を検索できます。 (@include方式のみ)

@include\(['"][^'"]*%\{[^\}]+\}

テンプレートキャッシュが有効時は、テンプレートを編集しても反映されません。
開発環境では「DEBUG_MODE」をオンにしてキャッシュされないようにして作業し、本番環境では「DEBUG_MODE」をオフにしてテンプレートキャッシュを有効にするのがいいでしょう。

本番環境反映時には、ダッシュボードからテンプレートキャッシュのクリアを忘れないようにしましょう。

インクルード文で使用できるグローバル変数の追加

Ver. 3.1.0 でインクルード文で利用できるグローバル変数を追加できる仕組みが追加されました。(カスタムグローバル変数も可)

Hook.php」を修正することにより、インクルード文で使えるグローバル変数を追加します。

extension/acms/Hook.php の「addGlobalVarsInIncludePath」メソッド

/**
 * テンプレートキャッシュ有効時に、
 * インクルードのパスで使用できるグローバル変数を設定
 *
 * ページ毎に値が違うようなグローバル変数を設定しないでください。
 * 値別にキャッシュが作成されるので、値の種類が多いとキャッシュの意味がなくなります。
 *
 * @param array $globalVarNames
 */
public function addGlobalVarsInIncludePath(&$globalVarNames)
{
    $globalVarNames = ['SESSION_USER_AUTH', 'HOGE']; // 例)インクルード文に %{SESSION_USER_AUTH} と %{HOGE} を使えるようにする
}

上記のコードのように、配列の形でグローバル変数名を指定します。すでにあるグローバル変数や「Hook.php」で追加したカスタムグローバル変数でも指定可能です。

Ver. 3.2.8 & Ver. 3.1.61 リリースのお知らせ


この記事では、2025年11月14日にリリースした Ver. 3.2.8Ver. 3.1.61 の修正内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

リリースノート

Ver. 3.2.8 修正点

  • CMS-7404 PHP-FPM/LiteSpeed環境で backgroundRedirect が確実に動作しない問題の修正
  • CMS-7406 flatpicker が閲覧画面で利用できなくなっている問題の修正
  • CMS-7407 MySQLのポートを変更している場合に、DB接続に失敗する問題を修正
  • CMS-7408 php8.4対応漏れの対応
  • CMS-7410 Ver. 3.2.4 より、閲覧画面側のエントリー詳細ページでバージョン管理ボックスが表示されない問題の修正
  • CMS-7412 API機能のレスポンスがキャッシュされてしまい、APIキー確認やその他制限を無視してアクセスできる問題を修正
  • CMS-7414 Summary系モジュールでカテゴリで絞り込みをしていない時、非公開カテゴリーのエントリーが一覧に表示されてしまう問題を修正
  • CMS-7415 CSVインポートで、ファイル内容やPHP環境によっては、タイプエラーでインポートできない問題を修正
  • CMS-7416 ユニットメニューにないユニットタイプを利用しているとラベルが表示されない問題の修正
  • CMS-7402 フォーム設定に不備がある場合、管理者用のエラーメッセージを表示する
  • CMS-7418 メールテンプレート内のIFブロックが正常に動作しない問題を修正

Ver. 3.1.61 修正点

  • CMS-7405 PHP-FPM/LiteSpeed環境で backgroundRedirect が確実に動作しない問題の修正
  • CMS-7409 Ver. 3.1.57 より、閲覧画面側のエントリー詳細ページでバージョン管理ボックスが表示されない問題の修正
  • CMS-7413 API機能のレスポンスがキャッシュされてしまい、APIキー確認やその他制限を無視してアクセスできる問題を修正

最後に

該当する問題がございましたら、できるだけ早めのバージョンアップをご検討ください。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。

今後ともどうぞよろしくお願いいたします。

ページキャッシュについて

ページキャッシュについて詳しく紹介します。

ページキャッシュを有効にする

ページキャッシュを有効にするためには、いくつか条件があります。

  • DEBUG_MODEがオフであること
  • コンフィグ or コンフィグセットで キャッシュ設定がONであること
  • ログアウトしている時
  • 読者ユーザーがログインしている時(要設定)

コンフィグでページキャッシュを有効化

管理ページ > コンフィグ > キャッシュ機能 ページの「ページキャッシュ」にチェックをつけることで有効になります。



読者ユーザーでログイン中でもページキャッシュを有効化

通常ログインしているときはページキャッシュは有効化されませんが、読者ユーザーの場合はログインしていてもページキャッシュを有効化することができます。
たとえば、会員制サイトなどでログインしていても表示内容がそこまで変わらない場合に有用です。

有効化する方法

管理ページ > コンフィグ > キャッシュ設定 ページの「読者ユーザーの場合」にチェックをつけることで有効になります。


読者ユーザーでもキャッシュを有効化

読者ユーザーでもキャッシュを有効化

この機能を有効化すると、ログインしていてもページキャッシュが効いてしまいます。ログインしているユーザー固有の情報(マイページなど)や、 ログイン状況によって表示・非表示を切り替える箇所は、キャッシュしないように、マイページはキャッシュ設定をオフにしたり、JavaScriptで制御する対応が必要です。

ログイン状態に応じて表示・非表示を切り替える「組み込みJS」が用意されています。 ログイン状態に応じて表示・非表示を制御する

ページキャッシュ設定

ページキャッシュは、サイトの構造やサイトの更新頻度、アクセス数などによって、キャッシュの戦略が変わってきます。

設定箇所

ページキャッシュの設定は、管理ページ > コンフィグ > キャッシュ機能 で行います。
コンフィグなので、ブログ毎の設定または、コンフィグセットでの設定となります。



設定項目

ページキャッシュ

チェックをつけることにより、ページキャッシュ機能が有効化されます。

POST時のキャッシュクリア

チェックをつけることにより、エントリー保存した時やコンフィグ変更、モジュール変更などの更新系の操作(POST)をした時に、ページキャッシュをクリアをするようになります。
ただしエントリー詳細ページのキャッシュは、ここの設定にかかわらず、エントリー更新時に該当エントリーのキャッシュをクリアします。

キャッシュ有効時間

キャッシュの有効時間を秒数で設定します。この有効時間はエントリー詳細ページ以外のキャッシュ有効時間となります。

エントリーキャッシュ有効時間

エントリー詳細ページのキャッシュ有効時間を秒数で設定します。

キャッシュクリアの対象ブログ

このブログでキャッシュがクリアされた時に、他のブログのキャッシュもクリア対象にするか設定を行います。

実行ブログのみ : キャッシュクリアが実行されたブログのみのキャッシュをクリアします。

実行ブログと下階層のブログ : キャッシュクリアが実行されたブログと、そのブログの下階層ブログのキャッシュをクリアします。

実行ブログと親階層のブログ : キャッシュクリアが実行されたブログと、そのブログの親階層ブログのキャッシュをクリアします。

全ブログ : すべてのブログのキャッシュをクリアします。

サイト構造をみて対象となるブログを設定しましょう。たとえば設定ブログの情報が、そのブログのみで使われているのであれば「実行ブログのみ」で大丈夫です。
他には、設定ブログの情報が「ルートブログ」で利用されているのであれば「実行ブログと親階層のブログ」を選択しましょう。

クライアントキャッシュ設定

ブラウザに保存するキャッシュ有効時間を秒数で指定します。キャッシュヒット時はサーバーへのアクセスがないので、非常に高速にページ表示ができます。

クライアントキャッシュは、CMS側でクリアできないキャッシュとなります。有効時間が過ぎるか、エンドユーザーがブラウザのキャッシュを削除するしかありません。
なので、クライアントキャッシュに長い有効期限を設定するのはやめましょう。数分程度が推奨です。

キャッシュ戦略

ページキャッシュは設定項目も多いため、キャッシュ設定例を2つほど紹介します。

更新頻度が低い場合のページキャッシュ設定例

1週間に一回など更新頻度が少ないサイトであれば、キャッシュ有効時間を伸ばしPOST時にキャッシュをクリアするようにします。 更新頻度が少ないので、POST時のキャッシュクリアも頻繁に発生せず、キャッシュの有効時間も長いので、キャッシュヒット率もあがります。

  • ページキャッシュ: 有効
  • POST時のキャッシュクリア: 有効
  • キャッシュ有効時間: 2592000秒(30日間)
  • エントリーキャッシュ有効時間: 2592000秒(30日間)
  • キャッシュクリアの対象ブログ: サイト構成に沿って適切に設定
  • クライアントキャッシュ設定: 120秒

更新頻度が高く、アクセス数の多い場合のページキャッシュ設定例

更新頻度が高く、アクセス数の多いサイトの場合、POST時のキャッシュクリアはしないようにします。 更新頻度が高いので、その都度キャッシュをクリアしてしまうと、キャッシュのヒット率が下がってしまうからです。

またキャッシュクリアをPOST時にしてしまうと、キャッシュが一気に消え、瞬間的にキャッシュヒット率が極端に下がり、サーバーの負荷も上がってしまいます。 そこでキャッシュの有効時間を短くし、キャッシュの有効時間でばらばらにキャッシュがクリアしていくようにしています。

ただしエントリーのキャッシュ時間は長くし、エントリー更新時のみキャッシュがクリアされるようにしています。
注意点はエントリー詳細ページにエントリー情報以外の情報があると、その情報が更新されないので、JavaScriptなどでひっぱってくるなどの対応が必要です。

  • ページキャッシュ: 有効
  • POST時のキャッシュクリア: 無効
  • キャッシュ有効時間: 300秒(5分間)
  • エントリーキャッシュ有効時間: 2592000秒(30日間)
  • キャッシュクリアの対象ブログ: サイト構成に沿って適切に設定
  • クライアントキャッシュ設定: 120秒

Shoping Cart拡張アプリ アップデートのお知らせ 2025年11月


この記事では、ShoppingCart 拡張アプリ について、2025年11月17日にリリースした  Ver. 2.4.0 の内容について紹介いたします。

現在お困りの問題に該当する項目がありましたら、お早めにバージョンアップのご検討をお願いいたします。

Ver. 2.4.0 のリリースノート

Featured

  • a-blog cms 3.2 及び php 8.4 対応(a-blog cms 3.2 未満 の対応は廃止 )

  • Mypage 機能の廃止

主なリリースノート内容

ShoppingCart 拡張アプリ Ver. 2.4.0 の内容について一部紹介いたします。

a-blog cms 3.2 及び php 8.4 対応(a-blog cms 3.2 未満 の対応は廃止 )

Ver. 2.4.0 より a-blog cms Ver. 3.2.0 に対応いたしました。併せて、PHP の対応バージョンも8.1 ~ 8.4 に変更されております。

また、a-blog cms 3.2 未満 の対応は廃止いたしました。ShoppingCart 拡張アプリのアップデートの際はご注意ください。

Mypage 機能の廃止

ShoppingCart 拡張アプリに含まれていた Mypage 機能を廃止いたしました。今後は a-blog cms 標準の会員機能をご利用ください。

最後に

該当する問題がありましたら、お早めにバージョンアップのご検討をお願いいたします。また、迅速にご報告いただいたユーザーの皆さま、誠にありがとうございました。

今後もご報告いただいた内容に対して真摯に受け止め修正と改善を行ってまいります。 今後ともどうぞよろしくお願いいたします。