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
| Katman | Girdi | Toplam bayt | Girdi başına | Adaptif |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | Evet |
clkDecoded | 256 | 32 MiB | 16 MiB | Evet |
clkDisplayList | 64 | 64 MiB | 16 MiB | Evet |
clkRaster | 8 | 128 MiB | 64 MiB | Evet |
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