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;
預設上限
| 層 | 條目數 | 總位元組 | 每條目 | 調適型 |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | 是 |
clkDecoded | 256 | 32 MiB | 16 MiB | 是 |
clkDisplayList | 64 | 64 MiB | 16 MiB | 是 |
clkRaster | 8 | 128 MiB | 64 MiB | 是 |
准入行為
啟用的政策要求條目數、總位元組數與單條目上限都必須是正數,且單條目上限不得超過總位元組上限
修改某一層不會影響其他層;調低上限時會立即移除最久未使用的條目,直到受影響的快取符合新上限
啟用 AdaptiveAdmission 時,最久未使用順序仍是快速的近期性路徑,同時一個四路有界的頻率 sketch 會在驅逐前把新候選者與每個必要的犧牲者比較
較冷的候選者會繞過保留機制而不干擾目前的請求;頻率相同時偏向較新的候選者;週期性的計數器衰減讓改變後的工作集得以取代歷史熱門條目
把 AdaptiveAdmission 設為 False 可在相同硬性界限下保留純最久未使用准入
大於 MaxEntryBytes 的條目仍會用於目前操作,但會繞過保留機制,避免單一大型解碼影像、顯示清單或渲染頁面擠掉可重用的小條目
把 Enabled 設為 False 並將上限歸零可停用該層的保留機制;ResetCacheAdmissionPolicies 則還原全部四層的預設值
統計資料
THPDFCacheAdmissionStatistics 會傳回生效中的上限、調適型模式、目前的條目與位元組佔用、命中、未命中、獲准的准入、被拒的准入、容量驅逐、頻率決策與衰減週期
原始範圍統計描述的是 LoadFromRandomAccessSource 自動建立的合併來源;明確提供的 THPDFCoalescingRandomAccessSource 會保留呼叫端選定的組態
相容性屬性
RenderCacheCapacity 會更新點陣條目上限,ImageCacheMaxBytes 會更新解碼影像的總位元組上限,兩者都走同一條政策驗證與立即修剪路徑
另請參閱: 可擴展載入, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource