キャッシュ機能の改善 & Webhook機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「キャッシュ機能」「Webhook機能」の改善点について紹介しています。

新機能・改善点一覧

  • CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更
  • CMS-6448 webhook に「ユーザー」タイプを追加

CMS-6480 キャッシュドライバーにデータベースを追加しデフォルトドライバーをデータベースに変更

「Ver. 3.0.0」で、キャッシュ機能が大幅にアップデートされ、複数のキャッシュドライバーから、環境に合わせて好きなキャッシュ方法を選択できるようになりました。

Ver. 3.0 にあったキャッシュドライバー

  • file: ファイル キャッシュドライバー
  • php: PHPファイル キャッシュドライバー
  • memory: メモリー キャッシュドライバー
  • apcu: APCuキャッシュドライバー
  • redis: Redis キャッシュドライバー

「Ver. 3.1.0」では、上記のドライバーに加え、「データベース」キャッシュドライバーを追加いたしました。このドライバーを選択すると、キャッシュをデータベースに保存するようになります。

追加意図

レンタルサーバー環境だと「APCu」や「Redis」のキャッシュドライバーが利用できない事が多く、デフォルトでもある「file」キャッシュドライバーを利用されている方も多いと思います。 ただディスクアクセスが遅い環境だと、キャッシュのパフォーマンスがあまり出ないため、今回メモリ上に乗るためアクセス速度が基本的には速い「データベース」を追加いたしました。

またもう1つの理由として、データベースキャッシュを利用することにより、複数台構成のときに、同じキャッシュを利用できる為になります。いままでは複数台構成でキャッシュを統一するには「Redis」を利用するしかなかったのですが、少し導入ハードルが高く設定しずらい状況でした。

各キャッシュのデフォルト値

今回「Ver. 3.1」で各キャッシュのキャッシュドライバーのデフォルト値を変更しています。基本的にはこのままで問題ありませんが、よりキャッシュのパフォーマンスをあげたい場合は、「Redis」や「APCu」をご検討ください。

変更前の Ver. 3.0 の設定値

テンプレートキャッシュ: file
フィールドキャッシュ: file
モジュールキャッシュ: file
一時キャッシュ: memory
コンフィグキャッシュ: file
ページキャッシュ: file

変更後の Ver. 3.1 の設定値

テンプレートキャッシュ: file
フィールドキャッシュ: database
モジュールキャッシュ: database
一時キャッシュ: memory
コンフィグキャッシュ: database
ページキャッシュ: database

キャッシュドライバーのマニュアルを見る

CMS-6448 webhook に「ユーザー」タイプを追加

今回、Webhookのタイプに「ユーザー」タイプを追加しました。これにより、会員サイトなどで新規会員登録された時や更新、退会時にフックをすることが出来るようになりました。


イベントの種類


イベント 説明
ユーザー作成 管理画面でユーザーを作成した時、発火します。
会員登録 管理画面で管理者がユーザー追加した時ではなく、会員登録機能で表から会員登録した場合に発火します。
ユーザー更新 ユーザー情報更新時に発火します。管理画面、会員機能による更新は関係ありません。
ユーザー削除 管理画面でユーザーを削除した時、発火します。
ユーザー退会 会員機能で、ユーザーが退会処理をした時、発火します。
ユーザーログイン 権限関係なく、ログイン・サインインしたとき、発火します。

ログとしてチャットツールに通知したり、外部のサービス(例えばCRMなど)とデータ連携したり、いろいろ出来る幅が広がると思います。ぜひご活用ください。

「キャッシュ機能」「Webhook機能」の改善紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。

URLコンテキスト

a-blog cmsでは、表示しているページがWebサイトのどこなのか、どのような状態であるかをURL上のパスとして表現しています。これを URLコンテキスト(URLによって表現されるページの文脈情報)と呼びます。個々のモジュールはURLコンテキストの情報を元に、表示するコンテンツを決定しています。

URLコンテキストと3つの基本ページ

a-blog cms の基本ページとして、トップページ・一覧ページ・詳細ページがあります。

トップページ

一般的な運用として Webサーバのドキュメントルートに a-blog cms が設置された場合には、この状態でトップページが表示されます。また、個別のディレクトリ内に設置することも可能で、その際には、設置先のディレクトリまで指定した状態がシステムとしてのトップページという扱いになります。

http://www.example.com/

一覧ページ

URLの末尾にスラッシュがくる状態のとき、基本的には a-blog cms では一覧ページが表示されます。

http://www.example.com/news/

詳細ページ

URLの末尾が.htmlで終わるような時には、エントリーの詳細ページが表示されます。

http://www.example.com/news/entry-1.html

URLコンテキストとモジュールの関係

場所的なコンテキスト

例えば、www.example.com というサーバの appleple というブログで、 news というカテゴリーの一覧を表示する場合は以下のようなURLになります。

http://www.example.com/appleple/news/

www.example.com というサーバの appleple というブログで、 news というカテゴリー内にある entry-1.html という一記事を表示する場合には以下のようなURLになります。

http://www.example.com/appleple/news/entry-1.html

www.example.com というサーバのルートブログで、 news というカテゴリー内にある campaign という子カテゴリーの一覧を表示する場合は以下のようなURLになります。

http://www.example.com/news/campaign/

これらのURLの中で使われている英数字が、それぞれのブログコード、カテゴリーコード、エントリーコードになります。

ページ内のモジュールは、ブログコード、カテゴリーコード、エントリーコードなどを含むURLコンテキストによってWebサイトの場所を判断し、そこで設定されている条件に従って情報を表示します。

状況的なコンテキスト

キーワードやタグによる検索、日付、ページ等の情報が含まれていた場合も、モジュールが表示する情報が影響し、情報を絞り込んで表示することができます。

2ページ目を表示する場合は以下のようなURLになります。

http://www.example.com/news/campaign/page/2/

「2009年6月」を表示する場合は以下のようなURLになります。

http://www.example.com/news/campaign/2009/06/

ここでは、簡単なURLコンテキストのみを紹介しました。カスタムフィールドの検索を含むURLコンテキストについては、カスタムフィールドの章で紹介します。

テンプレート機能の改善 - Ver. 3.1.0 リリース情報


この記事では、2023年09月14日にリリースされた「Ver. 3.1.0」の「テンプレート機能」の新機能・改善点について紹介しています。

新機能・改善点一覧

  • CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加
  • CMS-6471 インクルード文に使用できるグローバル変数に「%{CATEGORY_LEVEL}」を追加

CMS-6462 インクルード文で使えるグローバル変数を追加できるHook(addGlobalVarsInIncludePath)を追加

「Ver. 3.0」よりテンプレートキャッシュ機能が追加され、テンプレートキャッシュが利用できるようになりました。 ただテンプレートキャッシュ有効時(デフォルト有効)の制限として、インクルード文内で利用できる「グローバル変数」に制限がありました。

テンプレートキャッシュのマニュアル

インクルード文にグローバル変数を含める例

@include("/admin/entry/bcd/%{BCD}.html")

このインクルード文で使用できるグローバル変数は固定になっており、他のグローバル変数や、カスタムグローバル変数をインクルードで利用できず、不便な場合が多々ありました。 そこで、Ver. 3.1 では、インクルード文で利用できるグローバル変数を追加できる仕組みを用意しました。(カスタムグローバル変数もOKです)

インクルード文で使えるグローバル変数の追加方法

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

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

public function addGlobalVarsInIncludePath(&$globalVarNames)
{
    $globalVarNames = ['SESSION_USER_AUTH', 'HOGE']; // 例)インクルード文に %{SESSION_USER_AUTH} と %{HOGE} を使えるようにする
}

上記の例のように、配列の形でグローバル変数名を指定します。すでにあるグローバル変数は、Hook.php で追加したカスタムグローバル変数でも大丈夫です。

注意事項

上記の方法で、インクルード文に使用できるグローバル変数を追加することができますが、注意する点があります。 グローバル変数の値ごとにテンプレートキャッシュを生成するので、ページ毎に値が違うような値の種類が多いグローバル変数を設定してしまうと、大量のテンプレートキャッシュが生成されることになり、キャッシュの意味がなくなってしまう可能性があります。ここで追加するグローバル変数は、とりうる値の数が少ないグローバル変数にしてください。

CMS-6471 インクルード文に使用できるグローバル変数に「%{CATEGORY_LEVEL}」を追加

「Ver. 3.1」でインクルード文に使用できるグローバル変数を拡張できるようになりましたが、「%{CATEGORY_LEVEL}」はデフォルトで使用できるようにいたしました。

デフォルトで使用できるグローバル変数

%{ECD}
%{BCD}
%{PBCD}
%{RBCD}
%{CCD}
%{PCCD}
%{RCCD}
%{ALIAS_CODE}
%{IS_ADMIN}
%{MODULE_NAME}
%{MODULE_ID}
%{ADMIN_PATH}
%{ADMIN_PATH_MID}
%{CATEGORY_LEVEL} // Ver. 3.1 で追加

テンプレート機能の紹介については以上になります。他 Ver. 3.1.0 の新機能・改善も多くありますので、ぜひご覧ください。

日々使いやすいシステムとなるよう改善を勤めておりますので、皆様からの貴重なフィードバック、お待ちしております。
今後とも a-blog cms のことをどうぞよろしくお願いいたします。