PDFium Delphi Component Docs

Модуль FPdfCache

Модуль: FPdfCache
Предоставляет разделяемый контроллер байтового бюджета для удержанных данных PDF, владельцы которых могут освобождать записи по требованию

Types

TypeDescription
EPdfCacheErrorСообщает о некорректных бюджетах, размерах записей и участниках
TPdfCacheKindКлассифицирует сцены страниц (pckPageScene), тайлы (pckTile), миниатюры (pckThumbnail), системные шрифты (pckSystemFont), данные структур (pckStructure), снимки текста (pckTextSnapshot), снимки объектов страниц (pckPageObjectSnapshot), декодированные потоки (pckDecodedStream) и записи приложения (pckApplication)
TPdfCacheGovernorStatisticsСообщает бюджет, текущие и пиковые удержанные байты, закреплённые байты, количество записей, резервирования, касания, вытеснения и отказы; поля включают MaxBytes, StoredBytes, PeakStoredBytes, PinnedBytes, EntryCount, ReservationCount, TouchCount, EvictionCount, RejectionCount
TPdfCacheParticipantПолучает синхронные обратные вызовы EvictCacheEntry после того, как контроллер убрал токен из своего учёта
TPdfCacheGovernorEntryВнутренняя запись учёта, открытая для совместимости с компиляторами; поля включают Token, Participant, Kind, StoredBytes, LastUsed и Pinned
TPdfCacheGovernorПотокобезопасный реестр токенов с единым глобальным порядком LRU по всем участникам и видам кэша

TPdfCacheGovernor members

MemberDescription
Create(AMaxBytes: Int64)Создаёт контроллер с неотрицательным байтовым бюджетом
DestroyОчищает зарегистрированные записи перед освобождением состояния синхронизации
ReserveРезервирует байты и возвращает положительный токен, вытесняя глобальные записи LRU, когда это возможно, или возвращает ноль, если запись не помещается
TouchПеремещает существующий токен в самую свежую позицию
ReleaseУбирает учёт токена, не вызывая его обратный вызов вытеснения
SetPinnedЗащищает или снимает защиту используемой записи и ужимает кэш после открепления
ClearУдаляет все токены и просит каждого участника освободить его удержанную запись
ContainsПроверяет, остаётся ли токен зарегистрированным
UsageForKindВозвращает удержанные байты для одного TPdfCacheKind
EntryCountForKindВозвращает количество зарегистрированных записей для одного TPdfCacheKind
StatisticsВозвращает защищённый блокировкой снимок телеметрии
MaxBytesЧитает или изменяет общий бюджет и сразу ужимает незакреплённые записи после уменьшения

Ownership and callback contract

Контроллер никогда не владеет участниками и их удержанными данными

Каждый участник должен переживать все свои зарегистрированные токены и не должен возбуждать исключения из EvictCacheEntry

Обратные вызовы выполняются синхронно без удержания блокировки контроллера, поэтому участники могут безопасно вызывать Release для связанных токенов

Закреплённые записи могут временно держать StoredBytes выше уменьшенного значения MaxBytes, пока последний пользователь их не открепит

PDFium boundary

FPDF_RENDER_LIMITEDIMAGECACHE остаётся доступным через reLimitCache и применяет фиксированный нативный лимит кэша изображений PDFium на страницу

PDFium не предоставляет публичного ABI для настраиваемого или запрашиваемого общего для процесса байтового бюджета кэша

Поэтому контроллер измеряет удержанные объекты, принадлежащие PDFium Delphi Component, и использует явную оценку для непрозрачных разобранных сцен страниц

See Also

Контроллер кэша TPdf, TPdfTileCache, ConfigureSystemFontCacheGovernor