Hurtigbuffer-infrastruktur
HotPDF tilbyr en begrenset vektet minnebuffer for gjenbrukbare mellomliggende objekter og en vedvarende buffer for renderte sider som brukes ved rendering av innlaste dokumenter
Vektet minnebuffer
THPDFWeightedCache i HPDFCache eier TObject-verdier, indekserer dem etter AnsiString, og kaster ut de minst nylig brukte verdiene inntil deres samlede vekt passer innenfor MaxBytes
GetogTryGetpromoterer et treff til sist brukt og oppdaterer forespørselsstatistikkPeekogContainsKeyinspiserer oppføringer uten å endre nylighets- eller forespørselsstatistikkPutovertar eierskap, erstatter en eksisterende nøkkel på plass, og aksepterer trygt det samme objektet igjen når kun vekten endresRemovefrigjør en oppføring, mensExtractoverfører eierskapet til oppkalleren- Redusering av
MaxByteskaster umiddelbart ut oppføringer, ogTrimToBudgeteksponerer samme konvergensoperasjon eksplisitt Hits,Misses,HitRate,Evictions,RejectionsogReplacementseksponerer bufferatferd, mensResetStatisticsstarter et nytt måleintervall- Sporekapasiteten vokser geometrisk og aktive oppføringer forblir lenket i konstant-tids nylighetsrekkefølge
Innholdsnøkler
function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;
Begge funksjonene returnerer samme nøkkel i form av små SHA-256-heksadesimaltegn for samme innhold
HPDFCacheKeyOfStream hasher uten å allokere en ny fullstørreles byte-array, leser søkbare strømmer fra posisjon null, og gjenoppretter opprinnelig posisjon
Vedvarende buffer for renderte sider
Sett THotPDF.RenderCacheFolder for å aktivere disknivået som brukes etter den minnebaserte bufferen for renderte sider
- Sidefiler nøkkelsettes etter dokumentinnhold, nullbasert sideindeks og DPI
- PNG- og indeksoppdateringer er atomiske, og forlatte midlertidige filer fjernes under gjenoppretting
- Sidelesninger oppdaterer nylighet på sidenivå, mens dokumentantall, sideantall og bytemetoder kaster ut minst nylig brukte data
- Redusering av en konfigurert grense konvergerer umiddelbart i stedet for å vente på en senere skriving
GetLoadedFontDecoderkopierer behandlede arrayer dypt, slik at kallere ikke kan mutere bufrede tilordninger eller bredder - Dokumentreload, grafmutasjon, sideugyldiggjøring, JSON Patch og hver
CMapResourcePath-tildeling tømmer beholdte dekodere - Dekoderanskaffelse serialiseres per dokument for å unngå duplikatparsing av énn font, men låsen gjør ikke samtidig dokumentmutasjon trygg
GetLoadedFontDecoderCacheInfoeksponerer oppføringer, estimerte byte, budsjett, treff, bom, parsinger, utkastelser og ugyldiggjøringer
Shardet dekodebuffer for innlastede bilder
Hver THotPDF-instans koordinerer gjenbruk av dekoding av innlastede bilder gjennom 16 uavhengig låste metadata-shards
- Bufferoppslag og tilgang holder bare den valgte shard-en, mens kostbar filter- og bilkedekoding kjører utenfor bufferlåsene
- En eksakt per-nøkkel singleflight velger énn eierdekoding og får duplikatkallere til å vente på det samme fullførte resultatet
- Den konfigurerte
ImageCacheMaxBytes, oppføringsantallsgrensen og per-oppføring-grensen forblir globale på tvers av alle shards - Dekodete bildeoppføringer holder uforanderlige referansetellende håndtak som overlever utkastelse, og lar renderere tegne varme treff uten å realisere en
TBitmap-kopi - Fullførte bilder kopieres inn i kaller-eide
TBitmap-instanser, slik at kallere ikke kan mutere beholdte bufferpiksler - Dokumentreload og ugyldiggjøring av bildebuffer tømmer fullførte oppføringer, mens aktive flight-objekter beholder sin egen referansetelle levetid
GetImageDecodeConcurrencyInforapporterer aktive flighter, aktive og topp eierdekodinger, ventinger, fullføringer og feil
ICC-transformasjonsbuffer
HPDFICC deler komplette kilde-til-sRGB-transformasjoner gjennom en trådsikker 64 MiB vektet LRU-buffer, inkludert proof- og utdataprofiler når konfigurert
- SHA-256-nøkkelen dekker komplette kilde-, proof- og utdataprofilinnhold, effektiv rendering intent og svartpunktkompensasjonsinnstilling
HPDFGetICCTransformCacheInforapporterer treff, bom, utkastelser, avvisninger, oppføringstall, gjeldende byte og maksimale byteHPDFSetICCTransformCacheMaxBytesanvender umiddelbart et nytt prosessomfattende budsjett og kaster ut minst nylig brukte transformasjoner etter behovHPDFClearICCTransformCacheslipper beholdte transformasjoner og nullstiller forespørselsstatistikk uten å ugyldiggjøre transformasjonsgrensesnitt allerede holdt av kallere
Vedvarende fontdelsett-buffer
Sett THotPDF.FontSubsetCacheFolder for å aktivere gjenbrukbare TrueType- og OpenType-delsettresultater mens EnableFontSubsetting er aktiv
- Nøkkelen dekker originale fontbyte, eksakt brukt-glyf-bitmaske, kompakt eller spredt modus, og cachesjemaversjon
- Både den vanlige GDI fontlager-pathen og den registrerte Unicode-font-finalizeren gjenbruker samme buffer
- Kompakte PDF/A-oppføringer bevarer den gamle-til-nye GID-kartet og nye glyfantall som
CIDToGIDMaptrenger - Oppføringer valideres før bruk, korrupte oppføringer fjernes, og erstatning bruker en atomær flytting i samme mappe
FontSubsetCacheMaxBytesanvendes umiddelbart og kaster ut de minst nylig brukte eksakte bufferfilene uten å traversere urelaterte mapperGetFontSubsetCacheInforapporterer treff, bom, skrivinger, utkastelser, korrupsjon, avvisninger, skrivefeil, byte og filerClearFontSubsetCachefjerner bare fontdelsett-oppføringer og forlatte midlertidige oppføringer fra den konfigurerte mappen
PDF.EnableFontSubsetting := True; PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets'; PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024; Vedvarende buffer for gjengitte sider
Sett THotPDF.RenderCacheFolder for å aktivere disktieret brukt etter minnebufferen for gjengitte sider
- Sidefiler n&os;kles etter dokumentinnhold, nullbasert sideindeks, DPI, effektiv synlighet for valgfritt innhold, fargehensikt og fallback-policy
- Lag- og fargeintents-endringer velger gjenbrukbare tilstandsvarianter i stedet for å forkaste hvert bufret bitmap
- Ødelagte PNG-filer, utdaterte eller duplikate indeksrader, manglende mapper og uindekserte buffermapper repareres automatisk
- Ugyldige dokumentnøkler og koordinater avvises før filsystemtilgang
- Å redusere en konfigurert grense konvergerer umiddelbart i stedet for å vente på en senere skriving
- Korrupte PNG-filer, foreldede eller duplikate indeksrader, manglende mapper og uindekserte buffermapper repareres automatisk
- Ugyldige dokumentnøkler og koordinater avvises før filsystemtilgang
- Koblede dokumentmapper hoppes over under gjenoppretting, lesing, skriving, ugyldiggjøring og utkastelse; lenker og deres eksterne målfiler bevares
Eierskap
THPDFWeightedCacheeier verdier som sendes tilPutmed mindre en verdi returneres avExtractTHPDFDiskPageCache.Lookupreturnerer en nylig allokert bitmap eid av oppkalleren- Bitmap-verdier som sendes til
THPDFDiskPageCache.Storeforblir eid av oppkalleren
Relaterte API-er
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- THotPDF.GetImageDecodeConcurrencyInfo
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- Rendering-diagnostikk og operasjonstelemetri