[ログイン状態を保持] チェックボックスの設定とフルページキャッシュについて

フルページキャッシュを有効にすると、ログインしても上部ツールバーが表示されなくなりました。
[管理画面]-[システムと設定]-[最適化]-[キャッシュと表示速度設定]-[フルページキャッシュ][有効 - 該当のページ上のブロックで許可されていれば]

当該サイトでは以下を参考にログイン画面の[ログイン状態を保持]チェックボックスを非表示に設定しています。

'session' => [
	'remember_me' => [
		'lifetime' => 0,
	],
],

この設定を削除するか、0 以外の数値を設定すると問題は解消されるようです。

フルサイト(Atomik)のホームでは、[サイト全体の Footer Column 4]エリアからフォームを削除し、同じように設定すると問題を再現できました。
ページにキャッシュが作成されていない状態では、ログインするとツールバーが表示されます。
同じページに未ログインのブラウザでアクセスし、ページにキャッシュが作成されると、ログイン中でもツールバーが表示されなくなります。

ログイン画面の[ログイン状態を保持]チェックボックスを非表示にする設定と、フルページキャッシュを併用する方法はありますでしょうか。

Concrete CMS バージョン
9.2.1

PHP バージョン
8.0.x

サーバー
エックスサーバー
以下の機能はすべてオフに設定
・X アクセラレータ
・サーバーキャッシュ
・ブラウザキャッシュ

@Jun_22 こんにちは。

当該サイトでは以下を参考にログイン画面の[ログイン状態を保持]チェックボックスを非表示に設定しています。

ログイン状態を保持チェックボックス非表示にするのと、フルページキャッシュはあまり関係がないです。

以下の機能はすべてオフに設定
・X アクセラレータ
・サーバーキャッシュ
・ブラウザキャッシュ

うーん。
こちらをオフにしているのであれば、お使いのブラウザの問題のような気がします。

フルページキャッシュをオンにすると、Concrete CMS から、お使いのブラウザにも、PCローカルにキャッシュファイルを保存する様にと命令が出ます。

具体的には cache-control というヘッダーが出力されます。

ログアウトしている時だけ、その命令が出て、
ブラウザがキャッシュをPCに保存し、

ログインしても、ログアウト時のキャッシュが間違って読み込まれているかもしれません。

この場合は、ブラウザの強制再読み込みをして、ログイン画面が出るまで待つという解決策になると思います。キーボードのショートカットキーを覚えるのがいいのかなと思います。

Windows の Chrome であれば、Ctlr+Shift+R
Mac の Chrome であれば Command + Shift + R

です。

僕は X サーバーの中の人じゃないので、あくまでも予想ですが、
Xサーバーが使っている Web サーバーソフトの Nginx の設定も悪さしている様な気がします。
ダメ元で X サーバーさんに問い合わせてもいいかもしれない・・・。

ちょっと、以下をカスタマーサポートで問い合わせてもらって、このフォーラムの URL も添付してもらっていいですか?

〜〜〜 ここから 〜〜〜〜


お世話になります。Concrete CMS Japan ユーザーグループの Katz と申します。

御社のサービスで Nginx を使用されている前提でお伺いします。

Concrete CMS のユーザーで

・X アクセラレータ
・サーバーキャッシュ
・ブラウザキャッシュ

をオフにしていても PHP の FastCGI キャッシュは作成されるのでしょうか?

Concrete CMS でログイン状態の際は no-cache、ログアウト (ゲスト状態) は cache-control を出力しキャッシュする様に設定しているのですが、ログインしているはずなのに、ゲスト状態のページが読み込まれました。

別件で Nginx の FastCGI キャッシュが強い時に見られる症状です。

ダメ元で伺いますが、
FastCGI キャッシュが効いている場合、「CONCRETE*」 クッキーのあり・なしで、FastCGIをオンオフしてもらうような設定を追加してもらうことは可能でしょうか?

参考
ansible-c5-ma/prod-ansible-role/roles/nginx/templates/vhost_orig.conf.j2 at master · MacareuxDigital/ansible-c5-ma · GitHub

御社の共用サーバーで、他にも Concrete CMS を利用している方はたくさんいらっしゃいますので、この設定をしていただくと、高速なキャッシュ運用ができると思います。

よろしくお願いいたします。


〜〜〜 ここまで 〜〜〜〜

共用サーバーなので、難しいかもですが、サポートに連絡してみてください。

ご回答ありがとうございます。

エックスサーバー固有の問題かもしれない旨ご指摘ございましたので、さくらのレンタルサーバ(スタンダードプラン)でも試してみました。
PHP 8.0.29(モジュールモード)環境にフルサイト(Atomik)をクリーンインストールし、以下の手順で検証すると本件問題を再現できました。

  1. フルページキャッシュを有効にする
    [管理画面]-[システムと設定]-[最適化]-[キャッシュと表示速度設定]-[フルページキャッシュ][有効 - すべての場合でキャッシュを利用]

  2. ログイン画面の[ログイン状態を保持]チェックボックスを非表示に設定する
    application/config/concrete.php を作成し以下を記述

<?php
return [
    'session' => [
        'remember_me' => [
            'lifetime' => 0,
        ],
    ],
];
  1. キャッシュをクリアする
    [管理画面]-[システムと設定]-[最適化]-[キャッシュをクリア]

  2. 検証に使用するブラウザのキャッシュをクリアする

  3. ログインしてホームを表示する
    ツールバーが表示される

  4. 未ログインの別のブラウザでホームを表示する
    ページのキャッシュが作成される

  5. ログイン中のブラウザでホームを表示する
    ツールバーが表示されなくなる

こちらをオフにしているのであれば、お使いのブラウザの問題のような気がします。

macOS 環境で Firefox と Chrome を使用し、ログイン / 未ログインブラウザの役割を入れ替えてそれぞれ検証しましたが、いずれもログイン中のブラウザでツールバーが表示されなくなりました。

この場合は、ブラウザの強制再読み込みをして、ログイン画面が出るまで待つという解決策になると思います。キーボードのショートカットキーを覚えるのがいいのかなと思います。

ご案内いただきました手順を試しましたが、結果に変化はないようでした。
application/config/concrete.php を削除して再度検証すると、問題は解消されます。

以下をカスタマーサポートで問い合わせてもらって、このフォーラムの URL も添付してもらっていいですか?

問い合わせ文面までご用意いただき恐縮です。
さくらのレンタルサーバでも同じ理由で問題を生じていると考えられる場合は問い合わせてみようと思いますが、いかがでしょうか。

@Jun_22 となると、やはり「0」の値がいけないかもですね。

0ではなく、30 など、少し伸ばした日数はダメでしょうか?

もしかすると、0 は想定されていないかもしれません。

僕も個人的に「0」= 無制限 に設定はできないかなーと思っています。

設定を削除するか、0 以外の数値を設定すると問題は解消されるようです。
機能の無効化をご希望のサイトには、回避策としてごく短い期間を設定する方法を提案してみます。
ご回答ありがとうございました。