Infrastruktura keša
HotPDF obezbeđuje ograničeni memorijom-težinski keš za višekratno upotrebljive međuobjekte i trajni keš renderovanih stranica koji koristi renderovanje učitanih dokumenata
Težinski memorijski keš
THPDFWeightedCache u HPDFCache poseduje vrednosti tipa TObject, indeksira ih po AnsiString, i izbacuje najdavnije korišćene vrednosti dok njihova ukupna težina ne stane u MaxBytes
GetiTryGetunapređuju pogodak u najskorije korišćene i ažuriraju statistiku zahtevaPeekiContainsKeyispituju unose bez promene recentnosti ili statistike zahtevaPutpreuzima vlasništvo, zamenjuje postojeći ključ na mestu, i bezbedno prihvata isti objekat ponovo kada se promeni samo njegova težinaRemoveoslobađa unos, dokExtractprenosi vlasništvo na pozivaoca- Smanjenje
MaxBytesodmah izbacuje unose, aTrimToBudgeteksplicitno izlaže istu operaciju konvergencije Hits,Misses,HitRate,Evictions,RejectionsiReplacementsizlažu ponašanje keša, dokResetStatisticszapočinje novi interval merenja- Kapacitet slotova raste geometrijski, a živi unosi ostaju povezani u redosledu recentnosti u konstantnom vremenu
Ključevi sadržaja
function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;
Oba funkcije vraćaju isti ključ u obliku malih slova SHA-256 heksadecimalnog zapisa za isti sadržaj
HPDFCacheKeyOfStream hešuje bez alociranja drugog niza bajtova pune veličine, čita tokove koji mogu da se pretražuju od pozicije nula, i vraća njihovu prvobitnu poziciju
Trajni keš renderovanih stranica
Postavite THotPDF.RenderCacheFolder da omogućite disk tier koji se koristi nakon memorijskog keša renderovanih stranica
- Fajlovi stranica su ključani po sadržaju dokumenta, indeksu stranice počevši od nule i DPI-ju
- PNG i ažuriranja indeksa su atomska, a napušteni privremeni fajlovi se uklanjaju tokom oporavka
- Čitanja stranica osvežavaju recentnost na nivou stranice, dok broj dokumenata, broj stranica i ograničenja bajtova izbacuju najdavnije korišćene podatke
- Smanjenje konfigurisanog ograničenja konvergira odmah umesto da čeka kasniji upis
GetLoadedFontDecoderduboko kopira upravljane nizove tako pozivaoci ne mogu menjati keširana mapiranja ni širine - Ponovno učitavanje dokumenta, mutacija grafa, poništavanje stranica, JSON Patch i svaka
CMapResourcePathdodela čisti zadržane dekodere - Pribavljanje dekodera se serijalizuje po dokumentu da bi se izbeglo duplo parsiranje jednog fonta, ali zaključavanje ne čini bezbednom konkurentnu mutaciju dokumenta
GetLoadedFontDecoderCacheInfoizlaže unose, procenjene bajtove, budžet, pogođaje, promašaje, parsiranja, isterivanja i poništenja
Razdeljen (sharded) keš dekodovanja učitanih slika
Each THotPDF instanca koordinira ponovnu upotrebu dekodovanja učitanih slika kroz 16 nezavisno zaključavanih metadata shard-ova
- Pretraga keša i prijem drže samo izabrani shard dok se skupo dekodovanje filtera i slika odvija van ključeva keša
- Egzaktni per-key singleflight bira jednog owner dekodera i nalaže dupliranim pozivaocima da sačekaju isti završen rezultat
- Konfigurisano
ImageCacheMaxBytes, limit broja unosa i limit po unosu ostaju globalni kroz sve shard-ove - Unosi dekodovanih slika drže nepromenljive handle-ove sa brojanjem referenci koji prežive isterivanje i dopuštaju rendererima da crtaju tople pogotke bez materijalizacije
TBitmapcopy - Završene slike kopiraju se u pozivaocem posedovane
TBitmapinstance tako pozivaoci ne mogu menjati zadržane keš piksele - Ponovno učitavanje dokumenta i poništavanje keša slika čiste završene unose dok aktivni flight objekti zadržavaju svoj životni vek sa brojanjem referenci
GetImageDecodeConcurrencyInfoprijavljuje aktivne letove, aktivna i vršna owner dekodovanja, čekanja, završetke i neuspehe
ICC transformacioni keš
HPDFICC deli kompletne source-to-sRGB transformacije kroz thread-safe 64 MiB težinski LRU keš, uključujući proof i output profile kada su konfigurisani
- SHA-256 ključ pokriva kompletan izvor, sadržaje proof i output profila, efektivni rendering intent i podešavanje black-point kompenzacije
HPDFGetICCTransformCacheInfoprijavljuje pogođaje, promašaje, isterivanja, odbijanja, broj unosa, trenutne i najveće bajtoveHPDFSetICCTransformCacheMaxBytesodmah primenjuje novi budžet celog procesa i isteruje najdavije korišćene transformacije po potrebiHPDFClearICCTransformCacheoslobađa zadržane transformacije i resetuje statistiku zahteva bez poništavanja transformacionih interfejsa koje pozivaoci već drže
Trajni keš font-podskupova
Set THotPDF.FontSubsetCacheFolder da se uključe višekorisni TrueType i OpenType rezultati podskupa dok je EnableFontSubsetting aktivan
- Ključ pokriva originalne bajtove fonta, tačnu bitmapu korišćenih glifova, compact ili sparse režim i verziju šeme keša
- I normalna GDI putanja font-skladišta i registrovani finalizer Unicode fontova ponovo koriste isti keš
- Compact PDF/A unosi čuvaju staro-novo GID mapiranje i broj novih glifova potreban
CIDToGIDMap - Unosi se validiraju pre upotrebe, oštećeni unosi se uklanjaju, a zamena koristi atomsko premeštanje u istom direktorijumu
FontSubsetCacheMaxBytesprimenjuje se odmah i isteruje najdavije pristupane tačne keš datoteke bez obilaska nepovezanih folderaGetFontSubsetCacheInfoprijavljuje pogođaje, promašaje, upise, isterivanja, oštećenja, odbijanja, neuspele upise, bajtove i datotekeClearFontSubsetCacheuklanja samo unose font-podskupova i napuštene privremene unose iz konfigurisanog foldera
PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;
Trajni keš renderovanih stranica
Set THotPDF.RenderCacheFolder da se uključi disk nivo korišćen nakon keša renderovanih stranica u memoriji
- Datoteke stranica se ključaju po sadržaju dokumenta, indeksu stranice od nule, DPI, efektivnoj vidljivosti opcionog sadržaja, nameri boja i rezervnoj politici
- Promene slojeva i namera boja biraju višekorisne varijante stanja umesto bacanja svake keširane bitmape
- PNG i indeksna ažuriranja su atomska, a napuštene privremene datoteke se uklanjaju tokom oporavka
- Čitanja stranica osvežavaju svežinu na nivou stranice, dok broj dokumenata, broj stranica i bajt ograničenja isteruju najdavije korišćene podatke
- Smanjenje konfigurisanog ograničenja konvergira odmah umesto da čeka kasniji upis
- Oštećeni PNG fajlovi, zastareli ili dupli redovi indeksa, nedostajuće fascikle i neindeksirane fascikle keša se automatski popravljaju
- Neispravni ključevi dokumenata i koordinate se odbijaju pre pristupa sistemu fajlova
- Povezane fascikle dokumenata se preskaču tokom oporavka, čitanja, upisa, poništavanja i isterivanja; veze i njihove spoljašnje ciljne datoteke ostaju očuvane
Vlasništvo
THPDFWeightedCacheposeduje vrednosti prosleđene metodiPutosim ako vrednost nije vraćena prekoExtractTHPDFDiskPageCache.Lookupvraća novu bitmapu u vlasništvu pozivaoca- Vrednosti bitmapa prosleđene metodi
THPDFDiskPageCache.Storeostaju u vlasništvu pozivaoca
Povezani API-ji
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- THotPDF.GetImageDecodeConcurrencyInfo
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- Dijagnostika prikazivanja i telemetrija operacija