PDFium Delphi Component Docs

หน่วย FPdfCache

Unit: FPdfCache
ให้ตัวคุมงบไบต์แบบใช้ร่วมกันสำหรับข้อมูล PDF ที่เก็บไว้ โดยเจ้าของแต่ละรายการปล่อย entry ได้ตามต้องการ

Types

TypeDescription
EPdfCacheErrorรายงานงบ ขนาด entry และ participant ที่ไม่ถูกต้อง
TPdfCacheKindจำแนก page scene (pckPageScene), tile (pckTile), thumbnail (pckThumbnail), system font (pckSystemFont), ข้อมูลโครงสร้าง (pckStructure), text snapshot (pckTextSnapshot), page-object snapshot (pckPageObjectSnapshot), stream ที่ถอดรหัสแล้ว (pckDecodedStream) และ entry ของแอปพลิเคชัน (pckApplication)
TPdfCacheGovernorStatisticsรายงานงบ ไบต์ที่เก็บอยู่ปัจจุบันและจุดสูงสุด ไบต์ที่ pin อยู่ จำนวน entry การจอง การแตะ การ evict และการปฏิเสธ ฟิลด์ประกอบด้วย MaxBytes, StoredBytes, PeakStoredBytes, PinnedBytes, EntryCount, ReservationCount, TouchCount, EvictionCount, RejectionCount
TPdfCacheParticipantรับ callback EvictCacheEntry แบบ synchronous หลังจาก governor ตัด token ออกจากการบัญชีแล้ว
TPdfCacheGovernorEntryเรกคอร์ดบัญชีภายในที่เปิดเผยไว้เพื่อความเข้ากันได้ของคอมไพเลอร์ ฟิลด์ประกอบด้วย Token, Participant, Kind, StoredBytes, LastUsed และ Pinned
TPdfCacheGovernorทะเบียน token แบบ thread-safe ที่มีลำดับ least-recently-used เดียวระดับโกลบอลข้าม participant และชนิด cache

TPdfCacheGovernor members

MemberDescription
Create(AMaxBytes: Int64)สร้าง governor ที่มีงบไบต์ไม่ติดลบ
Destroyล้าง entry ที่ลงทะเบียนไว้ก่อนปล่อยสถานะการประสานงาน
Reserveจองไบต์และคืน token ที่เป็นบวก โดย evict entry LRU ระดับโกลบอลเมื่อทำได้ หรือคืนศูนย์เมื่อ entry ไม่พอที่
Touchย้าย token ที่มีอยู่ไปตำแหน่งใหม่ล่าสุด
Releaseตัดการบัญชีของ token ออกโดยไม่เรียก eviction callback
SetPinnedป้องกันหรือปลดการป้องกัน entry ที่กำลังใช้ และตัดขนาดหลังเลิก pin
Clearลบ token ทั้งหมดและขอให้ทุก participant ปล่อย entry ที่ตนเก็บไว้
Containsตรวจว่า token ยังคงลงทะเบียนอยู่หรือไม่
UsageForKindคืนไบต์ที่เก็บอยู่ของ TPdfCacheKind หนึ่งชนิด
EntryCountForKindคืนจำนวน entry ที่ลงทะเบียนของ TPdfCacheKind หนึ่งชนิด
Statisticsคืนสแนปชอต telemetry ที่ป้องกันด้วย lock
MaxBytesอ่านหรือเปลี่ยนงบรวม และตัด entry ที่ไม่ได้ pin ออกทันทีหลังลดลง

Ownership and callback contract

governor ไม่เป็นเจ้าของ participant หรือข้อมูลที่ตนเก็บเลย

ทุก participant ต้องมีอายุยาวกว่า token ที่ลงทะเบียนทั้งหมด และต้องไม่ raise ออกจาก EvictCacheEntry

callback ทำงานแบบ synchronous โดยไม่ถือ lock ของ governor participant จึงเรียก Release สำหรับ token ที่เกี่ยวข้องได้อย่างปลอดภัย

entry ที่ pin อยู่อาจทำให้ StoredBytes เกินค่า MaxBytes ที่ลดลงชั่วคราว จนกว่าผู้ใช้สุดท้ายจะเลิก pin

PDFium boundary

FPDF_RENDER_LIMITEDIMAGECACHE ยังใช้ได้ผ่าน reLimitCache โดยบังคับขีดจำกัด image cache ต่อหน้าแบบ fixed ของ PDFium

PDFium ไม่มี public ABI สำหรับงบไบต์ของ cache ระดับโปรเซสที่ปรับได้หรืออ่านได้

governor จึงวัดวัตถุที่เก็บไว้ซึ่งเป็นของ PDFiumPas และใช้ค่าประมาณที่ระบุชัดเจนสำหรับ page scene ที่ parse แล้วซึ่งมองไม่เห็นข้างใน

See Also

TPdf cache governor, TPdfTileCache, ConfigureSystemFontCacheGovernor