Polityki przyjmowania wpisów do cache w THotPDF

Steruje admission do cache niezależnie dla surowych skompresowanych zakresów źródłowych, zdekodowanych obrazów, skompilowanych display list stron i wyrenderowanych stron rastrowych

Deklaracje

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;

Domyślne limity

WarstwaWpisyBajty łącznieNa wpisAdaptacyjny
clkRawCompressed82 MiB256 KiBTak
clkDecoded25632 MiB16 MiBTak
clkDisplayList6464 MiB16 MiBTak
clkRaster8128 MiB64 MiBTak

Zachowanie admission

Włączona polityka wymaga dodatnich limitów liczby wpisów, bajtów łącznie i na wpis, przy czym limit na wpis nie może przekraczać limitu łącznego

Zmiana jednej warstwy nigdy nie zmienia innej warstwy, a obniżenie limitu natychmiast usuwa wpisy najrzadziej używane, dopóki dotknięty cache nie zmieści się w limicie

Gdy włączone jest AdaptiveAdmission, kolejność najrzadszego użycia pozostaje szybką ścieżką recency, a czterodrożny ograniczony szkic częstotliwości porównuje nowego kandydata z każdą wymaganą ofiarą przed eksmisją

Zimniejszy kandydat omija retencję bez zakłócania bieżącego żądania, równa częstotliwość faworyzuje nowszego kandydata, a okresowe starzenie liczników pozwala zmienionemu working setowi wypierać historycznie gorące wpisy

Ustaw AdaptiveAdmission na False, aby zachować te same twarde limity przy czystym admission wg najrzadszego użycia

Wpisy większe niż MaxEntryBytes są używane dla bieżącej operacji, ale omijają retencję, dzięki czemu jeden duży zdekodowany obraz, display list albo wyrenderowana strona nie wypiera mniejszych, nadających się do ponownego użycia wpisów

Ustawienie Enabled na False z zerowymi limitami wyłącza retencję dla danej warstwy, a ResetCacheAdmissionPolicies przywraca wszystkie cztery wartości domyślne

Statystyki

THPDFCacheAdmissionStatistics zwraca aktywne limity, tryb adaptacyjny, bieżące zajęcie wpisów i bajtów, trafienia, chybienia, przyjęte i odrzucone admission, eksmisje z powodu pojemności, decyzje częstotliwościowe i cykle starzenia

Statystyki surowych zakresów opisują automatyczne źródło koalescujące tworzone przez LoadFromRandomAccessSource; jawnie dostarczony THPDFCoalescingRandomAccessSource zachowuje konfigurację wybraną przez wywołującego

Właściwości zgodności

RenderCacheCapacity aktualizuje limit wpisów warstwy rastrowej, a ImageCacheMaxBytes aktualizuje łączny limit bajtów zdekodowanych obrazów, przechodząc przez tę samą walidację polityki i natychmiastowe przycinanie

Zobacz też: Skalowalne wczytywanie, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource