a-blog cms PHP API Reference

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
string

isCacheable()

ページキャッシュを参照・保存してよいリクエストか判定する

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)

Return values
bool

        
On this page

Search results