Инфраструктура кэширования

HotPDF предоставляет ограниченный взвешенный кэш в памяти для повторно используемых промежуточных объектов и постоянный кэш отрендеренных страниц, применяемый при рендеринге загруженных документов

Взвешенный кэш в памяти

THPDFWeightedCache из модуля HPDFCache владеет значениями TObject, индексирует их по ключам AnsiString и вытесняет наименее недавно использовавшиеся значения, пока их суммарный вес не уложится в MaxBytes

Ключи по содержимому

function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;

Обе функции возвращают один и тот же шестнадцатеричный ключ SHA-256 в нижнем регистре для одного и того же содержимого

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

Постоянный кэш отрендеренных страниц

Задайте THotPDF.RenderCacheFolder, чтобы включить дисковый уровень, используемый после кэша отрендеренных страниц в памяти

Шардированный кэш декодирования загруженных изображений

Каждый THotPDF координирует повторное использование декодирования загруженных изображений через 16 шардов метаданных с независимыми блокировками

Кэш ICC-преобразований

HPDFICC делит полные преобразования из исходного пространства в sRGB через потокобезопасный взвешенный LRU-кэш на 64 MiB, включая proof- и output-профили, когда они настроены

Постоянный кэш сабсетов шрифтов

Задайте THotPDF.FontSubsetCacheFolder, чтобы включить переиспользуемые результаты сабсеттинга TrueType и OpenType, пока EnableFontSubsetting активен

PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;

Постоянный кэш отрисованных страниц

Задайте THotPDF.RenderCacheFolder, чтобы включить дисковый ярус, используемый после расположенного в памяти кэша отрисованных страниц

Владение

Связанные API