PageCachePolicy
in package
ページキャッシュを参照・保存してよいリクエストかの判定と、キャッシュキーの組み立てを担う。
定数・設定・セッションなどのグローバル状態は呼び出し側(main.php)が値に詰めて渡し、 ここでは条件の組み合わせだけを扱う。
Table of Contents
Constants
- SUBSCRIBER_KEY_SUFFIX = "\x00subscriber"
- 読者向けに描画したページのキャッシュキーに付ける区別
Methods
- cacheKey() : string
- ページキャッシュのキーを組み立てる
- isCacheable() : bool
- ページキャッシュを参照・保存してよいリクエストか判定する
Constants
SUBSCRIBER_KEY_SUFFIX
読者向けに描画したページのキャッシュキーに付ける区別
private
mixed
SUBSCRIBER_KEY_SUFFIX
= "\x00subscriber"
Methods
cacheKey()
ページキャッシュのキーを組み立てる
public
cacheKey(string $requestUrl, int|null $ruleId, string $customRuleString, bool $isSubscriber) : string
読者にはシークレットのカテゴリー・ブログのエントリーが一覧などに表示されるため、 読者向けに描画したページは未ログインと別のキーにする。未ログインのキーは従来と同じ値のまま 変えない(アップデート直後も既存のキャッシュをそのまま使えるようにするため)。
Parameters
- $requestUrl : string
-
リクエスト URL
- $ruleId : int|null
-
適用中のルール ID
- $customRuleString : string
-
Hook(addCacheRule)が追加したキャッシュの区別
- $isSubscriber : bool
-
読者向けに描画するページか
Return values
stringisCacheable()
ページキャッシュを参照・保存してよいリクエストか判定する
public
isCacheable(bool $isDebugMode, bool $isCacheEnabled, bool $hasSession, bool $isSubscriber, bool $isSubscriberCacheEnabled, bool $isAdminPage, bool $isNoCacheRequest, bool $isPostRequest, string $requestMethod, string|null $blogStatus, string|null $categoryStatus) : bool
対象になるのは、未ログインか「読者のキャッシュ」が有効な読者による、公開側の GET リクエストに限る。 シークレットのブログ・カテゴリーは読者だけを対象にし、未ログインは対象外にする。シークレットの遮断は キャッシュの参照より後で行われるため、未ログインのキャッシュ(シークレットへ変更する前の公開中に 作られたものなど)を返すと遮断をすり抜ける。読者のキャッシュはキーが分かれており未ログインへは返らない。
Parameters
- $isDebugMode : bool
-
デバッグモード(ベンチマークモード・ユーザーのデバッグモードを含む)
- $isCacheEnabled : bool
-
キャッシュ機能が有効(config: cache)
- $hasSession : bool
-
ログイン中のセッションがある
- $isSubscriber : bool
-
ログイン中のユーザーが読者
- $isSubscriberCacheEnabled : bool
-
読者のキャッシュが有効(config: subscriber_cache)
- $isAdminPage : bool
-
管理画面へのリクエスト
- $isNoCacheRequest : bool
-
キャッシュしない指定のリクエスト
- $isPostRequest : bool
-
POST モジュールの実行
- $requestMethod : string
-
HTTP メソッド
- $blogStatus : string|null
-
表示中のブログのステータス
- $categoryStatus : string|null
-
表示中のカテゴリーのステータス(カテゴリーが無いときは null)