THotPDF Cache Admission Politikaları

Cache admission'ı; ham sıkıştırılmış kaynak range'leri, çözülmüş görseller, derlenmiş sayfa display list'leri ve render edilmiş raster sayfalar için bağımsız denetler

Bildirimler

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;

Varsayılan sınırlar

KatmanGirdiToplam baytGirdi başınaAdaptif
clkRawCompressed82 MiB256 KiBEvet
clkDecoded25632 MiB16 MiBEvet
clkDisplayList6464 MiB16 MiBEvet
clkRaster8128 MiB64 MiBEvet

Admission davranışı

Etkin bir policy pozitif girdi, toplam bayt ve girdi başına sınırları gerektirir; girdi başına sınır, toplam bayt sınırını aşamaz

Bir katmanı değiştirmek asla başka bir katmanı değiştirmez; bir sınırı düşürmek, etkilenen cache sığana kadar en uzun süredir kullanılmayan girdileri hemen kaldırır

AdaptiveAdmission etkinken, least-recently-used sırası hızlı recency yolu olarak kalır; dört yönlü sınırlı bir frequency sketch, eviction'dan önce yeni adayı gereken her kurbanla karşılaştırır

Daha soğuk aday, mevcut isteği rahatsız etmeden retention'ı atlar; eşit frequency'de daha yeni aday tercih edilir; periyodik sayaç aging'i ise değişen working set'in eski sıcak girdilerin yerini almasını sağlar

Aynı katı sınırları salt least-recently-used admission ile korumak için AdaptiveAdmission'ı False yapın

MaxEntryBytes'ten büyük girdiler mevcut işlem için kullanılır ama retention'ı atlar; böylece tek bir büyük çözülmüş görselin, display list'in veya render edilmiş sayfanın yeniden kullanılabilir daha küçük girdilerin yerini alması önlenir

Sıfır sınırlarla Enabled'ı False yapmak o katman için retention'ı devre dışı bırakır; ResetCacheAdmissionPolicies ise dört varsayılanın tamamını geri yükler

İstatistikler

THPDFCacheAdmissionStatistics; etkin sınırları, adaptif modu, mevcut girdi ve bayt doluluğunu, hit'leri, miss'leri, kabul edilen admission'ları, reddedilen admission'ları, kapasite eviction'larını, frequency kararlarını ve aging döngülerini döndürür

Ham range istatistikleri, LoadFromRandomAccessSource tarafından oluşturulan otomatik coalescing kaynağını tanımlar; açıkça sağlanan bir THPDFCoalescingRandomAccessSource, çağıranın seçtiği yapılandırmayı korur

Uyumluluk property'leri

RenderCacheCapacity raster girdi sınırını, ImageCacheMaxBytes ise çözülmüş görsel toplam bayt sınırını; aynı policy doğrulama ve anında budama hattı üzerinden günceller

Ayrıca bkz.: Ölçeklenebilir Yükleme, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource