Политики допуска в кэш THotPDF
Управляет допуском в кэш независимо для исходных сжатых диапазонов, декодированных изображений, скомпилированных display list страниц и отрендеренных растровых страниц
Объявления
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;
Ограничения по умолчанию
| Слой | Записи | Всего байт | На запись | Адаптивный |
|---|---|---|---|---|
clkRawCompressed | 8 | 2 MiB | 256 KiB | Да |
clkDecoded | 256 | 32 MiB | 16 MiB | Да |
clkDisplayList | 64 | 64 MiB | 16 MiB | Да |
clkRaster | 8 | 128 MiB | 64 MiB | Да |
Поведение допуска
Включённая политика требует положительных лимитов на число записей, общий объём в байтах и объём одной записи, причём лимит на запись не должен превышать общий лимит
Изменение одного слоя никогда не затрагивает остальные, а снижение лимита немедленно вытесняет наименее недавно использовавшиеся записи, пока затронутый кэш не впишется в новый размер
При включённом AdaptiveAdmission порядок LRU остаётся быстрым путём по давности обращения, а четырёхсторонний ограниченный frequency sketch перед вытеснением сравнивает нового кандидата с каждым обязательным вытесняемым элементом
Более холодный кандидат пропускает удержание, не нарушая текущий запрос, при равной частоте побеждает более новый кандидат, а периодическое старение счётчиков позволяет изменившемуся рабочему набору заменить исторически горячие записи
Установите AdaptiveAdmission в False, чтобы сохранить те же жёсткие границы при чисто LRU-допуске
Записи крупнее MaxEntryBytes используются в текущей операции, но не удерживаются в кэше, чтобы одна большая декодированная картинка, display list или отрендеренная страница не вытеснила пригодные к повторному использованию мелкие записи
Установка Enabled в False с нулевыми лимитами отключает удержание для этого слоя, а ResetCacheAdmissionPolicies восстанавливает все четыре значения по умолчанию
Статистика
THPDFCacheAdmissionStatistics возвращает активные лимиты, режим адаптивности, текущую занятость в записях и байтах, попадания, промахи, принятые и отклонённые допуски, вытеснения по исчерпанию ёмкости, частотные решения и циклы старения
Статистика исходных диапазонов описывает автоматический coalescing-источник, создаваемый LoadFromRandomAccessSource; явно переданный THPDFCoalescingRandomAccessSource сохраняет конфигурацию, выбранную вызывающей стороной
Свойства совместимости
RenderCacheCapacity обновляет лимит записей растрового слоя, а ImageCacheMaxBytes — общий лимит в байтах для декодированных изображений; оба проходят ту же валидацию политики и немедленную подрезку
См. также: Scalable Loading, THPDFCoalescingRandomAccessSource, LoadFromRandomAccessSource