โครงสร้างพื้นฐานแคช

HotPDF ให้แคชหน่วยความจำแบบมีขอบเขต บวกแคชแบบคงอยู่สำหรับ font subset ที่ใช้ซ้ำได้กับหน้าที่เรนเดอร์แล้ว

แคชหน่วยความจำแบบถ่วงน้ำหนัก

THPDFWeightedCache ใน HPDFCache เป็นเจ้าของค่า TObject, index ด้วย AnsiString และ evict ค่าที่ใช้ล่าสุดนานที่สุดออกไปจนน้ำหนักรวมพอดี MaxBytes

คีย์ของเนื้อหา

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

ทั้งสอง function คืน key hex SHA-256 ตัวพิมพ์เล็กเดียวกันสำหรับเนื้อหาชุดเดิม

HPDFCacheKeyOfStream hash โดยไม่จอง byte array เต็มขนาดครั้งที่สอง อ่าน stream แบบ seek ได้จากตำแหน่งศูนย์ แล้วคืนตำแหน่งเดิมของมัน

แคชตัวถอดรหัสฟอนต์ที่โหลดแล้ว

instance THotPDF แต่ละตัวคง decoder ของฟอนต์ที่โหลดแล้วซึ่ง parse ผ่าน เก็บไว้ใน LRU cache แบบถ่วงน้ำหนักระดับเอกสาร

แคชถอดรหัสรูปภาพที่โหลดแล้วแบบ sharded

instance THotPDF แต่ละตัวจัดการการใช้ decode รูปที่โหลดซ้ำผ่าน metadata shard 16 ชาร์ดที่ lock เป็นอิสระต่อกัน

แคชการแปลง ICC

HPDFICC แชร์ transform จาก source ไป sRGB แบบเต็มผ่าน LRU cache แบบถ่วงน้ำหนัก 64 MiB ที่ปลอดภัยต่อเธรด รวม profile ของ proof กับ output เมื่อตั้งค่าไว้

แคช font-subset ถาวร

ตั้ง THotPDF.FontSubsetCacheFolder เพื่อเปิดผล subset แบบ TrueType กับ OpenType ที่ใช้ซ้ำได้ ขณะที่ EnableFontSubsetting ทำงานอยู่

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

แคชหน้าที่เรนเดอร์แล้วแบบถาวร

ตั้ง THotPDF.RenderCacheFolder เพื่อเปิดชั้นดิสก์ที่ใช้ต่อจากแคชหน้าที่เรนเดอร์แล้วในหน่วยความจำ

ความเป็นเจ้าของ

API ที่เกี่ยวข้อง