PowerCMS X ブログ

2022-01-25

ダイナミック・パブリッシングでのページ表示結果をキャッシュするプラグイン

PowerCMS Xは静的生成と動的生成のハイブリッドで、基本的なWebページは静的生成、動的に変化させたい部分のみを動的生成というように組み合わせて運用ができます。動的生成を利用するケースは主に下記のようなものです。

このうち、会員ログインを必要とするケースで、ログインしていない状態でもページが閲覧でき、ログインするとページが変化するような場合、毎回テンプレートを処理するのは無駄が多く、少しでも高速化したいといった用途のために、ダイナミック・パブリッシングでのページ表示をキャッシュするプラグインを作成しました。このプラグインは次のリリースで正式にサポートされます。

2回目以降のアクセスで表示が劇的に高速化されます。以下のような特徴があります。

  • 会員ログインしているときはキャッシュを利用しない
  • URLにパラメタが付いているときはキャッシュを利用しない
  • GETリクエスト以外ではキャッシュを利用しない (設定変更可能)
  • 冗長化構成に対応
  • 再構築トリガーの設定により適切にキャッシュをクリア

プラグインのダウンロード

環境変数と初期値

"dynamiccaching_extensions": ["html", "json"],
"dynamiccaching_request_methods": ["GET"],
"dynamiccaching_exclude_logged_in": ["member"]
  • dynamiccaching_extensions : 対象とする拡張子を配列で指定します。
  • dynamiccaching_request_methods : 対象とする REQUEST_METHOD を配列で指定します。
  • dynamiccaching_exclude_logged_in : 指定したモデルでログイン済みの時、処理を対象外とします。

キャッシュが作成される時・利用される時

  • 環境変数で指定した条件に拡張子と REQUEST_METHOD がマッチする時で、指定したモデルでログインしていない時にダイナミック指定のページを閲覧した時
  • 上記の条件にマッチして、且つ、リクエストされたURLに「QUERY_STRING」が指定されていない時

これらの条件を満たす時、キャッシュが利用され、キャッシュがなければ保存します。

キャッシュが破棄されるタイミング

  • プラグイン「CacheManager」で「アプリケーション・キャッシュ」がリセットされた時
  • そのページのオブジェクトが更新された時
  • そのページに対して再構築トリガーによる再構築が呼ばれた時 (※)

※ このプラグインを有効化すると、URLマップの編集画面で「ファイル出力」が「ダイナミック」の時も再構築トリガーの設定が表示されます。
※ 「コンテナ」の指定およびプラグイン「RebuildRelations」によるトリガーは有効に作用しません。

設定の例

  • ファイル出力が「ダイナミック」のトップページなどの場合、オブジェクトの更新でキャッシュを破棄したいモデルをすべて再構築トリガーに指定してください。
  • カテゴリーアーカイブや日付アーカイブで、コンテナが「記事」、ファイル出力が「ダイナミック」の URLマップの場合、再構築トリガーに「記事」を指定します。
  • 記事アーカイブ、ファイル出力が「ダイナミック」の URLマップの場合、1つの記事の更新ですべての記事アーカイブのキャッシュをクリアする必要がある時を除き、再構築トリガーに「記事」を指定する必要はありません(そのページの記事が更新された時にその記事アーカイブのキャッシュが破棄されるため)。

カテゴリー:プラグイン

投稿者:Junnama Noda

ブログ内検索

アーカイブ