THotPDF Cache Admission Policies

生の圧縮ソースレンジ、デコード済み画像、コンパイル済みページディスプレイリスト、描画済みラスターページについて、キャッシュアドミッションを独立に制御します

宣言

THPDFCacheLayerKind = (clkRawCompressed, clkDecoded,
  clkDisplayList, clkRaster);

THPDFCacheAdmissionPolicy = record
  Enabled: boolean;
  AdaptiveAdmission: boolean;
  MaxEntries: Integer;
  MaxTotalBytes: Int64;
  MaxEntryBytes: Int64;
end;

THPDFCacheAdmissionStatistics = record
  Enabled: boolean;
  AdaptiveAdmission: boolean;
  MaxEntries: Integer;
  MaxTotalBytes: Int64;
  MaxEntryBytes: Int64;
  EntryCount: Integer;
  CurrentBytes: Int64;
  HitCount: Int64;
  MissCount: Int64;
  AdmissionCount: Int64;
  RejectionCount: Int64;
  EvictionCount: Int64;
  FrequencyAdmissionCount: Int64;
  FrequencyRejectionCount: Int64;
  FrequencyAgingCount: Int64;
end;

procedure ResetCacheAdmissionPolicies;
procedure SetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
  const Policy: THPDFCacheAdmissionPolicy);
function GetCacheAdmissionPolicy(Kind: THPDFCacheLayerKind;
  out Policy: THPDFCacheAdmissionPolicy): boolean;
function GetCacheAdmissionStatistics(Kind: THPDFCacheLayerKind;
  out Statistics: THPDFCacheAdmissionStatistics): boolean;

既定の制限

レイヤーエントリ数合計バイト数エントリあたりアダプティブ
clkRawCompressed82 MiB256 KiBはい
clkDecoded25632 MiB16 MiBはい
clkDisplayList6464 MiB16 MiBはい
clkRaster8128 MiB64 MiBはい

アドミッション動作

有効なポリシーでは、エントリ数・合計バイト数・エントリあたりの各上限が正の値である必要があり、エントリあたりの上限は合計バイト数の上限を超えられません

あるレイヤーを変更しても他のレイヤーは変わらず、上限を下げると、影響先のキャッシュが収まるまで最近使用していないエントリから即座に削除されます

AdaptiveAdmission を有効にすると、最近使用順が高速な新しさベースの経路として残り、4 値の上限付き頻度スケッチが、追い出しの前に新しい候補を必須の追い出し対象すべてと比較します

より使用頻度の低い候補は現在の要求に影響を与えずに保持を回避し、頻度が同じなら新しい候補を優先し、カウンタの定期エージングにより、変化したワーキングセットが過去のホットエントリを置き換えられます

AdaptiveAdmission を False にすると、同じハード上限のままで純粋な最近使用順アドミッションになります

MaxEntryBytes を超えるエントリは現在の操作で使われますが保持はされず、1 つの大きなデコード画像・ディスプレイリスト・描画済みページが再利用可能な小さなエントリを押し出すのを防ぎます

Enabled を False にして上限を 0 にするとそのレイヤーの保持が無効になり、ResetCacheAdmissionPolicies で 4 件すべての既定値に戻せます

統計

THPDFCacheAdmissionStatistics は、有効な上限、アダプティブモード、現在のエントリ数とバイト占有量、ヒット、ミス、受け入れられたアドミッション、拒否されたアドミッション、容量による追い出し、頻度による判定、エージングサイクルを返します

生レンジの統計は、LoadFromRandomAccessSource が作成した自動コアレッシングソースを表します。明示的に指定された THPDFCoalescingRandomAccessSource は、呼び出し側が選んだ設定をそのまま保持します

互換性プロパティ

RenderCacheCapacity はラスターエントリ上限を、ImageCacheMaxBytes はデコード画像の合計バイト上限を、同じポリシー検証と即時トリムの経路で更新します

関連項目: スケーラブルローディング、THPDFCoalescingRandomAccessSource、LoadFromRandomAccessSource