THotPDF 快取准入政策

針對原始壓縮來源範圍、解碼影像、已編譯的頁面顯示清單與已渲染的點陣頁面,獨立控制各自的快取准入

宣告

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 時,最久未使用順序仍是快速的近期性路徑,同時一個四路有界的頻率 sketch 會在驅逐前把新候選者與每個必要的犧牲者比較

較冷的候選者會繞過保留機制而不干擾目前的請求;頻率相同時偏向較新的候選者;週期性的計數器衰減讓改變後的工作集得以取代歷史熱門條目

把 AdaptiveAdmission 設為 False 可在相同硬性界限下保留純最久未使用准入

大於 MaxEntryBytes 的條目仍會用於目前操作,但會繞過保留機制,避免單一大型解碼影像、顯示清單或渲染頁面擠掉可重用的小條目

把 Enabled 設為 False 並將上限歸零可停用該層的保留機制;ResetCacheAdmissionPolicies 則還原全部四層的預設值

統計資料

THPDFCacheAdmissionStatistics 會傳回生效中的上限、調適型模式、目前的條目與位元組佔用、命中、未命中、獲准的准入、被拒的准入、容量驅逐、頻率決策與衰減週期

原始範圍統計描述的是 LoadFromRandomAccessSource 自動建立的合併來源;明確提供的 THPDFCoalescingRandomAccessSource 會保留呼叫端選定的組態

相容性屬性

RenderCacheCapacity 會更新點陣條目上限,ImageCacheMaxBytes 會更新解碼影像的總位元組上限,兩者都走同一條政策驗證與立即修剪路徑

另請參閱: 可擴展載入, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource