Políticas de admisión de caché de THotPDF

Controla la admisión en caché de forma independiente para los rangos crudos comprimidos de origen, las imágenes decodificadas, las display lists compiladas de página y las páginas raster renderizadas

Declaraciones

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;

Límites predeterminados

CapaEntradasBytes totalesPor entradaAdaptativo
clkRawCompressed82 MiB256 KiBSí
clkDecoded25632 MiB16 MiBSí
clkDisplayList6464 MiB16 MiBSí
clkRaster8128 MiB64 MiBSí

Comportamiento de admisión

Una política habilitada exige límites positivos de entradas, de bytes totales y por entrada, y el límite por entrada no debe exceder el límite de bytes totales

Cambiar una capa nunca cambia otra capa, y bajar un límite elimina de inmediato las entradas menos recientemente usadas hasta que la caché afectada quepa

Con AdaptiveAdmission habilitado, el orden least-recently-used sigue siendo la vía rápida de recencia, mientras que un frequency sketch acotado de cuatro vías compara a cada nuevo candidato con todas las víctimas requeridas antes de la evicción

Un candidato más frío omite la retención sin perturbar la solicitud actual, la frecuencia igual favorece al candidato más nuevo, y el envejecimiento periódico de contadores permite que un working set cambiado reemplace entradas calientes históricas

Establezca AdaptiveAdmission en False para conservar los mismos límites estrictos con admisión puramente least-recently-used

Las entradas mayores que MaxEntryBytes se usan para la operación actual pero omiten la retención, evitando que una imagen decodificada, una display list o una página renderizada grande desplace entradas menores reutilizables

Establecer Enabled en False con límites en cero deshabilita la retención de esa capa, mientras que ResetCacheAdmissionPolicies restaura los cuatro valores predeterminados

Estadísticas

THPDFCacheAdmissionStatistics devuelve los límites activos, el modo adaptativo, la ocupación actual de entradas y bytes, los hits, los misses, las admisiones aceptadas, las admisiones rechazadas, las evicciones por capacidad, las decisiones por frecuencia y los ciclos de envejecimiento

Las estadísticas de rangos crudos describen la fuente de coalescencia automática creada por LoadFromRandomAccessSource; un THPDFCoalescingRandomAccessSource suministrado explícitamente conserva la configuración elegida por quien llama

Propiedades de compatibilidad

RenderCacheCapacity actualiza el límite de entradas raster y ImageCacheMaxBytes actualiza el límite de bytes totales de imágenes decodificadas a través de la misma validación de políticas y la misma vía de recorte inmediato

Véase también: Carga escalable, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource