THotPDF Cache Admission Policies
Řídí cache admission nezávisle pro raw komprimované zdrojové rozsahy, dekódované obrázky, zkompilované display lists stránek i vykreslené raster stránky
Deklarace
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;
Výchozí limity
| Vrstva | Položky | Celkem bajtů | Na položku | Adaptivní |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | Ano |
clkDecoded | 256 | 32 MiB | 16 MiB | Ano |
clkDisplayList | 64 | 64 MiB | 16 MiB | Ano |
clkRaster | 8 | 128 MiB | 64 MiB | Ano |
Chování admission
Zapnutá politika vyžaduje kladné limity na položky, celkové bajty i bajty na položku a limit na položku nesmí přesáhnout celkový limit bajtů
Změna jedné vrstvy nikdy nezmění jinou vrstvu a snížení limitu okamžitě odebere nejdéle nepoužité položky, dokud se dotčená cache vejde do mezí
Se zapnutým AdaptiveAdmission zůstává LRU pořadí rychlou cestou podle aktuálnosti, zatímco čtyřcestný ohraničený frequency sketch porovná nového kandidáta s každou nutnou obětí dřív, než evikuje
Studenější kandidát obejde retenci, aniž by narušil aktuální požadavek, stejná frekvence dává přednost novějšímu kandidátovi a periodické stárnutí čítačů umožní změněnému working setu nahradit historicky horké položky
Nastavte AdaptiveAdmission na False, pokud chcete stejné tvrdé meze s čistě LRU admission
Položky větší než MaxEntryBytes se použijí pro aktuální operaci, ale retenci obcházejí, takže jeden velký dekódovaný obrázek, display list nebo vykreslená stránka nevytlačí znovu použitelné menší položky
Enabled nastavené na False s nulovými limity vypne retenci dané vrstvy a ResetCacheAdmissionPolicies obnoví všech čtyři výchozí nastavení
Statistiky
THPDFCacheAdmissionStatistics vrátí aktivní limity, adaptivní režim, aktuální obsazení položkami a bajty, zásahy, minulé pokusy, přijaté admission, odmítnuté admission, evikce kvůli kapacitě, frekvenční rozhodnutí i cykly stárnutí
Statistiky raw rozsahů popisují automatický coalescing zdroj vytvořený LoadFromRandomAccessSource; explicitně dodaný THPDFCoalescingRandomAccessSource si ponechá konfiguraci zvolenou volajícím
Vlastnosti pro kompatibilitu
RenderCacheCapacity aktualizuje limit raster položek a ImageCacheMaxBytes celkový bajtový limit dekódovaných obrázků, a to stejnou cestou validace politiky a okamžitého prořezání
Viz také: Škálovatelné načítání, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource