Cache Infrastructure
HotPDF leverer afgrænset hukommelsescaching plus persistente cacher til genbrugelige font-subsets og renderede sider
Vægtet hukommelses-cache
THPDFWeightedCache i HPDFCache ejer TObject -værdier, indekserer dem efter AnsiString og bortviser de mindst senest brugte værdier, indtil deres samlede vægt passer i MaxBytes
GetogTryGetforfremmer et hit til senest brugt og opdaterer forespørgselsstatistikkenPeekogContainsKeyinspicerer entry'er uden at ændre recency eller forespørgselsstatistikPuttager ejerskab, erstatter en eksisterende nøgle på stedet og accepterer sikkert samme objekt igen, når kun dets vægt ændresRemovefrees an entry, whileExtractoverdrager ejerskabet til kalderen- Reducing
MaxBytesbortviser entry'er straks, ogTrimToBudgeteksponerer samme konvergensoperation eksplicit Hits,Misses,HitRate,Evictions,Rejections, ogReplacementseksponerer cache-adfærd, mensResetStatisticsstarter et nyt måleinterval- Slot-kapacitet vokser geometrisk, og levende entry'er forbliver kædet i konstant-tids recency-orden
Indholdsnøgler
function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;
Begge funktioner returnerer den samme SHA-256 hexadecimale nøgle med små bogstaver for det samme indhold
HPDFCacheKeyOfStream hasher uden at allokere et andet byte-array i fuld størrelse, læser søgbare strømme fra position nul og gendanner deres oprindelige position
Decoder-cache for indlæste fonts
Each THotPDF -instans fastholder succesfuldt fortolkede decodere for indlæste fonts i en dokument-scoped vægtet LRU-cache
- Standardbudgettet er 32 MiB med en hård grænse på 128 entry'er, og et nul-byte-budget deaktiverer fastholdelse
- Delte indirekte fontordbøger genbruger én fortolket kerne på tværs af sider, selv når sider bruger forskellige ressourcenavne
- Tekstudtræk, SVG-eksport, udskiftning af indlæst tekst og eksplicitte decoder-forespørgsler deler samme cache
GetLoadedFontDecoderlaver dybe kopier af managede arrays, så kaldere ikke kan mutere cachede mappings eller bredder- Dokumentgenindlæsning, grafmutation, sideugyldiggørelse, JSON Patch og hver
CMapResourcePath-tildeling rydder fastholdte decodere - Decoderanskaffelse serialiseres pr. dokument for at undgå duplikeret fortolkning af én font, men låsen gør ikke samtidig dokumentmutation sikker
GetLoadedFontDecoderCacheInfoeksponerer entry'er, estimerede bytes, budget, hits, misses, fortolkninger, bortvisninger og ugyldiggørelser
Shardet decode-cache for indlæste billeder
Each THotPDF -instans koordinerer genbrug af decode af indlæste billeder gennem 16 uafhængigt låste metadata-shards
- Cache-opslag og optagelse holder kun den valgte shard, mens dyr filter- og billedafkodning kører uden for cache-låsene
- En præcis pr.-nøgle singleflight udvælger én ejer-afkodning og får duplikerede kaldere til at vente på det samme fuldførte resultat
- The configured
ImageCacheMaxBytes, entry-antalsgrænse og pr.-entry-grænse forbliver globale på tværs af alle shards - Entry'er for afkodede billeder holder uforanderlige referencetællehandles, der overlever bortvisning og lader renderere tegne varme hits uden at materialisere en
TBitmap-kopi - Fuldførte billeder kopieres ind i kalder-ejede
TBitmap-instanser, så kaldere ikke kan mutere fastholdte cache-pixels - Dokumentgenindlæsning og billede-cache-ugyldiggørelse rydder fuldførte entry'er, mens aktive flight-objekter beholder deres egen referencetællelevetid
GetImageDecodeConcurrencyInforapporterer aktive flights, aktive og maksimale ejer-afkodninger, ventetider, fuldførelser og fejl
ICC transform cache
HPDFICC deler komplette kilde-til-sRGB-transformationer gennem en trådsikker 64 MiB vægtet LRU-cache, herunder proof- og outputprofiler, når de er konfigureret
- SHA-256-nøglen dækker det komplette kilde-, proof- og outputprofilindhold, effektiv rendering intent og black-point-kompensationsindstillingen
HPDFGetICCTransformCacheInforapporterer hits, misses, bortvisninger, afvisninger, entry-antal, aktuelle bytes og maksimale bytesHPDFSetICCTransformCacheMaxBytesanvender straks et nyt procesomfattende budget og bortviser efter behov de mindst senest brugte transformationerHPDFClearICCTransformCachefrigiver fastholdte transformationer og nulstiller forespørgselsstatistikken uden at ugyldiggøre transform-interfaces, som kaldere allerede holder
Persistent font-subset-cache
Set THotPDF.FontSubsetCacheFolder for at aktivere genbrugelige TrueType- og OpenType-subset-resultater, mens EnableFontSubsetting er aktiv
- Nøglen dækker de originale fontbytes, det præcise brugt-glyph-bitmap, kompakt eller sparsom tilstand og cache-skemaversionen
- Både den almindelige GDI font-store-vej og den registrerede Unicode-font-finalizer genbruger samme cache
- Kompakte PDF/A-entry'er bevarer den gamle-til-nye GID-map og det nye glyph-antal, som
CIDToGIDMap - Entry'er valideres før brug, korrupte entry'er fjernes, og erstatning bruger et atomært træk i samme mappe
FontSubsetCacheMaxBytesanvendes straks og bortviser de mindst senest tilgåede præcise cachefiler uden at gennemløbe urelaterede mapperGetFontSubsetCacheInforapporterer hits, misses, skrivninger, bortvisninger, korruption, afvisninger, skrivefejl, bytes og filerClearFontSubsetCachefjerner kun font-subset-entry'er og forladte midlertidige entry'er fra den konfigurerede mappe
PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;
Persistent cache for renderede sider
Set THotPDF.RenderCacheFolder for at aktivere disk-laget, der bruges efter cachen for renderede sider i hukommelsen
- Sidefiler nøgles efter dokumentindhold, nul-baseret sideindeks, DPI, effektiv optional-content-synlighed, farveintent og fallback-politik
- Lag- og farveintent-ændringer vælger genbrugelige tilstandsvarianter i stedet for at kassere hver cached bitmap
- PNG- og indeksopdateringer er atomære, og forladte midlertidige filer fjernes under gendannelse
- Sideindlæsninger opfrisker recency på sideniveau, mens dokumentantal, sideantal og bytegrænser bortviser de mindst senest brugte data
- Reduceres en konfigureret grænse, konvergerer det straks i stedet for at vente på en senere skrivning
- Korrupte PNG-filer, forældede eller duplikerede indeksrækker, manglende mapper og ikke-indekserte cache-mapper repareres automatisk
- Ugyldige dokumentnøgler og koordinater afvises før filsystemadgang
- Dokumentmapper bag links springes over ved genoprettelse, læsninger, skrivninger, ugyldiggørelse og bortvisning; links og deres eksterne målfiler bevares
Ownership
THPDFWeightedCacheejer værdier, der sendes tilPutmedmindre en værdi returneres afExtractTHPDFDiskPageCache.Lookupreturnerer en nyallokeret bitmap ejet af kalderen- Bitmap-værdier, der sendes til
THPDFDiskPageCache.Storeforbliver ejet af kalderen
Relaterede API'er
- Persistent Font-Subset Cache
- THotPDF.LoadedFontDecoderCacheMaxBytes
- THotPDF.GetLoadedFontDecoderCacheInfo
- Sharded Loaded-Image Decode Cache
- THotPDF.GetImageDecodeConcurrencyInfo
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- Renderingsdiagnostik og operationstelemetri