THotPDF Cache Admission Policies
Controla a admissão em cache de forma independente para os intervalos de origem comprimidos em bruto, as imagens descodificadas, as display lists de página compiladas e as páginas raster renderizadas
Declarações
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;
Default limits
| Layer | Entries | Total bytes | Per entry | Adaptive |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | Sim |
clkDecoded | 256 | 32 MiB | 16 MiB | Sim |
clkDisplayList | 64 | 64 MiB | 16 MiB | Sim |
clkRaster | 8 | 128 MiB | 64 MiB | Sim |
Admission behaviour
Uma política ativa exige limites positivos de entradas, de bytes totais e por entrada, e o limite por entrada não pode exceder o limite de bytes totais
Alterar uma camada nunca altera outra e, ao baixar um limite, as entradas menos usadas recentemente são removidas de imediato até a cache afetada caber
Com AdaptiveAdmission ativo, a ordem least-recently-used continua a ser o caminho rápido de recência, enquanto um frequency sketch limitado de quatro vias compara um novo candidato com cada vítima necessária antes da eviction
Um candidato mais frio ignora a retenção sem perturbar o pedido atual, a frequência igual favorece o candidato mais recente, e o envelhecimento periódico dos contadores permite que um working set alterado substitua entradas historicamente quentes
Defina AdaptiveAdmission como False para manter os mesmos limites rígidos com admissão puramente least-recently-used
As entradas maiores do que MaxEntryBytes são usadas na operação atual mas não são retidas, evitando que uma única imagem descodificada, display list ou página renderizada de grande dimensão desloque entradas reutilizáveis mais pequenas
Definir Enabled como False com limites a zero desativa a retenção dessa camada, enquanto ResetCacheAdmissionPolicies repõe os quatro valores por omissão
Estatísticas
THPDFCacheAdmissionStatistics devolve os limites ativos, o modo adaptativo, a ocupação atual em entradas e bytes, hits, misses, admissões aceites, admissões rejeitadas, evictions por capacidade, decisões de frequência e ciclos de envelhecimento
As estatísticas de intervalos em bruto descrevem a origem de coalescing automático criada por LoadFromRandomAccessSource; um THPDFCoalescingRandomAccessSource fornecido explicitamente mantém a configuração escolhida por quem chama
Compatibility properties
RenderCacheCapacity atualiza o limite de entradas raster e ImageCacheMaxBytes atualiza o limite de bytes totais das imagens descodificadas, ambos através da mesma validação de política e do mesmo caminho de trim imediato
Ver também: Carregamento escalável, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource