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

VrstvaPoložkyCelkem bajtůNa položkuAdaptivní
clkRawCompressed82 MiB256 KiBAno
clkDecoded25632 MiB16 MiBAno
clkDisplayList6464 MiB16 MiBAno
clkRaster8128 MiB64 MiBAno

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