Cache Infrastructure
HotPDF tarjoaa rajatun muistivälimuistin sekä pysyvät välimuistit uudelleenkäytettäville fonttisubseteille ja renderöidyille sivuille
Painotettu muistivälimuisti
THPDFWeightedCache muodossa HPDFCache omistaa TObject -arvoja, indeksoi ne AnsiString-avaimilla ja karkottaa vähiten äskettäin käytetyt arvot, kunnes niiden yhdistetty paino mahtuu MaxBytes
GetjaTryGetnostavat osuman viimeisimmäksi käytetyksi ja päivittävät pyyntötilastotPeekjaContainsKeytarkastelevat alkioita muuttamatta tuoreusjärjestystä tai pyyntötilastojaPutottaa omistajuuden, korvaa olemassa olevan avaimen paikallaan ja hyväksyy turvallisesti saman objektin uudelleen, kun vain sen paino muuttuuRemovevapauttaa alkion, kun taasExtractsiirtää omistajuuden kutsujalle- Reducing
MaxBytespienentäminen poistaa merkintöjä heti, jaTrimToBudgettoteuttaa saman konvergenssioperaation erikseen Hits,Misses,HitRate,Evictions,Rejections, sekäReplacementsnäyttävät välimuistin käyttäytymisen, kun taasResetStatisticsaloittaa uuden mittausvälin- Paikkakapasiteetti kasvaa geometrisesti ja elävät alkiot pysyvät linkitettyinä vakioaikaisessa tuoreusjärjestyksessä
Sisältöavaimet
function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;
Molemmat funktiot palauttavat saman pienaakkostetun SHA-256-heksaavaimen samalle sisällölle
HPDFCacheKeyOfStream tiivistää varaamatta toista täysikokoista tavutaulukkoa, lukee seek-kykyiset virrat positiosta nolla ja palauttaa niiden alkuperäisen position
Ladattujen fonttien dekooderivälimuisti
Each THotPDF -instanssi säilyttää onnistuneesti jäsennellyt ladattujen fonttien dekooderit asiakirjakohtaisessa painotetussa LRU-välimuistissa
- Oletusbudjetti on 32 MiB ja kova raja 128 alkiota, ja nollatavun budjetti poistaa säilytyksen käytöstä
- Jaetut epäsuorat fonttisanakirjat käyttävät yhtä jäsennettyä ydintä sivujen yli, vaikka sivut käyttäisivät eri resurssinimiä
- Tekstin poiminta, SVG-vienti, ladatun tekstin korvaus ja erilliset dekooderipyynnöt jakavat saman välimuistin
GetLoadedFontDecoderkopioi hallitut taulukot syväkopiona, joten kutsujat eivät voi muuttaa välimuistissa olevia kuvauksia tai leveyksiä- Asiakirjan uudelleenlataus, graafin muutos, sivun mitätöinti, JSON Patch ja jokainen
CMapResourcePath-sijoitus tyhjentää säilytetyt dekooderit - Dekooderin hankinta sarjallistetaan asiakirjaa kohti yhden fontin kaksoisjäsennyksen välttämiseksi, mutta lukko ei tee rinnakkaisesta asiakirjan muutoksesta turvallista
GetLoadedFontDecoderCacheInfonäyttää alkiot, arvioidut tavut, budjetin, osumat, hutit, jäsennykset, karkotukset ja mitätöinnit
Sirpaloitu ladattujen kuvien dekoodausvälimuisti
Each THotPDF -instanssi koordinoi ladattujen kuvien dekoodauksen uudelleenkäyttöä 16 erikseen lukitun metatietosirpaleen kautta
- Välimuistin haku ja hyväksyntä pitävät vain valitun sirpaleen lukittuna, kun taas raskas suodatin- ja kuvadekoodaus ajetaan välimuistilukkojen ulkopuolella
- Tarkka avainkohtainen singleflight valitsee yhden omistajan dekoodauksen ja saa kaksoiskutsujat odottamaan samaa valmistunutta tulosta
- Määritetty
ImageCacheMaxBytes, alkiomäärän raja ja alkiokohtainen raja pysyvät globaaleina kaikissa sirpaleissa - Dekoodattujen kuvien alkiot kantavat muuttumattomia viitelaskettuja handleja, jotka selviävät karkotuksesta ja antavat renderöijien piirtää lämpimiä osumia luomatta
TBitmapkopiota - Valmiit kuvat kopioidaan kutsujan omistamiin
TBitmap-instansseihin, joten kutsujat eivät voi muuttaa säilytettyjä välimuistin pikseleitä - Asiakirjan uudelleenlataus ja kuvavälimuistin mitätöinti tyhjentävät valmistuneet alkiot, kun taas aktiiviset lento-objektit säilyttävät oman viitelasketun elinkaarensa
GetImageDecodeConcurrencyInfoilmoittaa aktiiviset lennot, aktiiviset ja huippu-omistajan dekoodaukset, odotukset, valmistumiset ja epäonnistumiset
ICC-muunnosvälimuisti
HPDFICC jakaa kokonaiset lähteestä sRGB:hen -muunnokset säikeiturallisen 64 MiB painotetun LRU-välimuistin kautta, mukaan lukien vedos- ja tulostusprofiilit, kun ne on määritetty
- SHA-256-avain kattaa kokonaiset lähteen, vedos- ja tulostusprofiilien sisällöt, tehokkaan värintoistotarkoituksen ja mustapistekompensaation asetuksen
HPDFGetICCTransformCacheInfoilmoittaa osumat, hutit, karkotukset, hylkäykset, alkiomäärän, nykyiset tavut ja enimmäistavutHPDFSetICCTransformCacheMaxBytessoveltaa uutta prosessinlaajuista budjettia välittömästi ja karkottaa tarvittaessa vähiten äskettäin käytetyt muunnoksetHPDFClearICCTransformCachevapauttaa säilytetyt muunnokset ja nollaa pyyntötilastot mitätöimättä muunnosrajapintoja, joita kutsujat jo pitävät
Pysyvä fonttisubsettien välimuisti
Set THotPDF.FontSubsetCacheFolder ottamaan käyttöön uudelleenkäytettävät TrueType- ja OpenType-subsettulokset, kun EnableFontSubsetting on käytössä
- Avain kattaa alkuperäiset fonttitavut, tarkan käytettyjen glyyfien bittikartan, kompaktin tai harvan tilan sekä välimuistin skeemaversion
- Sekä tavallinen GDI-fonttivarastopolku että rekisteröity Unicode-fontin viimeistelijä käyttävät samaa välimuistia
- Kompaktit PDF/A-almeet säilyttävät vanhasta uuteen -GID-kuvauksen ja uuden glyyfimäärän, joita
CIDToGIDMap - Alkiot validoidaan ennen käyttöä, rikkonaiset alkiot poistetaan ja korvaus käyttää atomista saman hakemiston siirtoa
FontSubsetCacheMaxBytessoveltaa välittömästi ja karkottaa vähiten äskettäin käytetyt tarkat välimuistitiedostot käymättä asiaan liittymättömissä kansioissaGetFontSubsetCacheInfoilmoittaa osumat, hutit, kirjoitukset, karkotukset, rikkoontumiset, hylkäykset, kirjoitusvirheet, tavut ja tiedostotClearFontSubsetCachepoistaa vain fonttisubsettialmeet ja hylätyt väliaikaisalmeet määritetystä kansiosta
PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;
Pysyvä renderoitujen sivujen välimuisti
Set THotPDF.RenderCacheFolder ottamaan käyttöön levytason, jota käytetään muistissa olevan renderoitujen sivujen välimuistin jälkeen
- Sivutiedostot avainnataan asiakirjan sisällön, nollapohjaisen sivuhakemiston, DPI:n, tehokkaan valinnaisen sisällön näkyvyyden, väritarkoituksen ja varasuunnitelmakäytännön mukaan
- Taso- ja väritarkoitusmuutokset valitsevat uudelleenkäytettäviä tilavariaatiota heittämättä jokaista välimuistissa olevaa bittikarttaa pois
- PNG- ja indeksipäivitykset ovat atomisia, ja hylätyt väliaikaistiedostot poistetaan palautuksen yhteydessä
- Sivuluvut virfreshivät sivutason tuoreuden, kun taas asiakirjamäärän, sivumäärän ja tavurajat karkottavat vähiten äskettäin käytetyt tiedot
- Määritetyn rajan pienentäminen konvergoi välittömästi odottamatta myöhempää kirjoitusta
- Rikkonaiset PNG-tiedostot, vanhentuneet tai kaksoiskappaleindeksirivit, puuttuvat kansiot ja indeksoimattomat välimuistikansiot korjataan automaattisesti
- Virheelliset asiakirja-avaimet ja koordinaatit hylätään ennen tiedostojärjestelmäpääsyä
- Linkitetyt asiakirjakansiot ohitetaan palautuksen, luku-, kirjoitus-, mitätöinti- ja karkotustoimien yhteydessä; linkit ja niiden ulkoiset kohdetiedostot säilytetään
Ownership
THPDFWeightedCacheomistaa arvot, jotka annetaanPutellei arvoa palautetaExtractTHPDFDiskPageCache.Lookuppalauttaa vastaan varatun bittikartan, jonka kutsuja omistaa- Bittikarta-arvot, jotka annetaan
THPDFDiskPageCache.Storejäävät kutsujan omistukselle
Related APIs
- Persistent Font-Subset Cache
- THotPDF.LoadedFontDecoderCacheMaxBytes
- THotPDF.GetLoadedFontDecoderCacheInfo
- Sharded Loaded-Image Decode Cache
- THotPDF.GetImageDecodeConcurrencyInfo
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- Renderöintidiagnostiikka ja operaatiotelemetria