Gyorsítótár-infrastruktúra
A HotPDF egy korlátozott súlyozott memóriagyorsítótárat biztosít az újrahasznosítható köztobjektumokhoz, valamint egy tartós renderelt oldalas gyorsítótárat a betöltött dokumentumok rendereléséhez
Súlyozott memóriagyorsítótár
A HPDFCache egységben lévő THPDFWeightedCache a TObject értékeket birtokolja, AnsiString szerint indexeli őket, és a legrégebben használt értékeket kizárja, amíg együttes súlyuk be nem fér a MaxBytes korlátba
- A
Getés aTryGetelőlépteti a találatot a legutóbb használttá, és frissíti a kérelmi statisztikát - A
Peekés aContainsKeya bejegyzéseket a frissesség vagy a kérelmi statisztika módosítása nélkül vizsgálja - A
Putátveszi a tulajdonjogot, egy meglévő kulcsot helyben cserél, és biztonságosan elfogadja ugyanazt az objektumot is, ha csak a súlya változik - A
Removefelszabadít egy bejegyzést, míg azExtracta tulajdonjogot a hívónak adja át - A
MaxBytescsökkentése azonnal kizárja a bejegyzéseket, aTrimToBudgetpedig ugyanazt a konvergenciaműveletet teszi elérhetővé kifejezetten - A
Hits,Misses,HitRate,Evictions,RejectionsésReplacementsa gyorsítótár viselkedését mutatják, míg aResetStatisticsúj mérési időszakot indít - A rések kapacitása mértani sorozatban nő, és az élő bejegyzések állandó idejű frissességi sorrendben maradnak láncolva
Tartalomkulcsok
function HPDFCacheKeyOfBytes(const Bytes: TBytes): AnsiString;
function HPDFCacheKeyOfStream(Stream: TStream): AnsiString;
Mindkét függvény ugyanazt a kisbetűs SHA-256 hexadecimális kulcsot adja vissza ugyanarra a tartalomra
Az HPDFCacheKeyOfStream kivonatol egy második teljes méretű bájttömb lefoglalása nélkül, a pozícionálható adatfolyamokat a nulla pozícióból olvassa, és visszaállítja az eredeti pozíciójukat
Tartós renderelt oldalas gyorsítótár
Állítsa be a THotPDF.RenderCacheFolder tulajdonságot a memóriabeli renderelt oldalas gyorsítótár után használt lemezes szint engedélyezéséhez
- Az oldalas fájlok kulcsa a dokumentum tartalma, a nulla alapú oldalindex és a DPI
- A PNG- és indexfrissítések atomiak, és az elhagyott ideiglenes fájlok a helyreállítás során törlődnek
- Az oldalas olvasások frissítik az oldalszintű frissességet, míg a dokumentumszám-, oldalszám- és bájtkorlátok a legrégebben használt adatokat zárják ki
- A
GetLoadedFontDecodermanaged tömböket másol le mélyen, hogy a hívók ne módosíthassák a gyorsítótárazott leképezéseket vagy szélességeket - A dokumentum újratöltés, a gráf módosítás, az oldal érvénytelenítés, a JSON Patch és minden
CMapResourcePathhozzárendelés törli a megtartott dekódolókat - A dekódoló megszerzése dokumentumonként szerializált, hogy egy fontot ne elemezzünk duplán, de a zárlat nem teszi biztonságossá az egyidejű dokumentummódosítást
- A
GetLoadedFontDecoderCacheInfobejegyzéseket, becsült bájtokat, keretet, találatokat, tévedéseket, elemzéseket, kilakoltatásokat és érvénytelenítéseket tár fel
Szétosztott betöltött kép dekódolási gyorsítótár
Minden THotPDF példány 16, egymástól függetlenül zárolt metaadat-szardaron keresztül koordinálja a betöltött képek dekódolási újrahasznosítását
- A gyorsítótár-keresés -felvétel csak a kiválasztott szardát zárolja, miközben a költséges szűrő- és képfeldolgozás a gyorsítótár-zárlatokon kívül fut
- A pontos, kulcsonkénti singleflight egy tulajdonos-dekódolást választ, és a duplikált hívókat ugyanarra a befejezett eredményre vártatja
- A konfigurált
ImageCacheMaxBytes, a bejegyzésszám- és az egybejegyzés-keret globális marad az összes szardon át - A dekódolt kép bejegyzések immutable, hivatkozásszámlált handlokat tartanak, amelyek túlélik a kilakoltatást, és lehetővé teszik a renderereknek a meleg találatok rajzolását
TBitmapmásolat készítése nélkül - A kész képeket hívó által birtokolt
TBitmappéldányokba másolja, így a hívók nem módosíthatják a megtartott gyorsítótár-pixeleket - A dokumentum újratöltés és a kép-gyorsítótár érvénytelenítés törli a kész bejegyzéseket, miközben az aktív flight objektumok megtartják saját hivatkozásszámlált élettartamukat
- A
GetImageDecodeConcurrencyInfoaz aktív flightokat, az aktív és csúcs tulajdonos-dekódolásokat, a várakozásokat, a befejezéseket és a hibákat jelenti
ICC transzformációs gyorsítótár
Az HPDFICC a teljes forrás-sRGB transzformációkat megosztja egy szálbiztos, 64 MiB-os súlyozott LRU gyorsítótárban, konfiguráció esetén a proof és kimeneti profilokkal együtt
- A SHA-256 kulcs lefedi a teljes forrás-, proof- és kimeneti profiltartalmat, az effektív rendering intentet és a feketepont-kompenzáció beállítását
- A
HPDFGetICCTransformCacheInfotalálatokat, tévedéseket, kilakoltatásokat, elutasításokat, bejegyzésszámot, aktuális és maximális bájtokat jelent - A
HPDFSetICCTransformCacheMaxBytesazonnal alkalmaz egy új, folyamat-szintű keretet, és szükség szerint kilakoltatja a legrégebben használt transzformációkat - A
HPDFClearICCTransformCachefelszabadítja a megtartott transzformációkat, és visszaállítja a kérési statisztikákat anélkül, hogy érvénytelenítené a hívóknál már lévő transzformációs interfészeket
Tartós font-subset gyorsítótár
Állítsa be a THotPDF.FontSubsetCacheFolder-t az újrahasznosítható TrueType és OpenType subset eredményekhez, amíg az EnableFontSubsetting aktív
- A kulcs lefedi az eredeti fontbájtokat, a pontos használt-glyph bitképet, a kompakt vagy ritka módot és a gyorsítótár-séma verzióját
- A normál GDI fonttároló útvonal és a regisztrált Unicode-font finalizátor ugyanazt a gyorsítótárat használja
- A kompakt PDF/A bejegyzések megőrzik a régi-új GID leképezést és az új glyphszámot, amelyre a
CIDToGIDMap-nak szüksége van - A bejegyzések használat előtt validálódnak, a sérültek eltávolításra kerülnek, a csere pedig atomi azonos könyvtárbeli mozgatással történik
- A
FontSubsetCacheMaxBytesazonnal érvényesül, és a legrégebben használt pontos gyorsítótárfájlokat kilakoltatja kapcsolódó mappák pásztázása nélkül - A
GetFontSubsetCacheInfotalálatokat, tévedéseket, írásokat, kilakoltatásokat, sérüléseket, elutasításokat, írási hibákat, bájtokat és fájlokat jelent - A
ClearFontSubsetCachecsak a font-subset bejegyzéseket és az elhagyott ideiglenes bejegyzéseket távolítja el a konfigurált mappából
PDF.EnableFontSubsetting := True;
PDF.FontSubsetCacheFolder := 'C:\ProgramData\MyApp\HotPDF\FontSubsets';
PDF.FontSubsetCacheMaxBytes := 256 * 1024 * 1024;
Tartós renderelt oldal gyorsítótár
Állítsa be a THotPDF.RenderCacheFolder-t a lemezes szint engedélyezéséhez, amelyet a memóriabeli renderelt oldal gyorsítótár után használ a rendszer
- Az oldal fájlok dokumentumtartalom, nullaalapú oldalindex, DPI, effektív opcionális tartalom láthatóság, színszándék és tartalékpolitika szerint kulcsolódnak
- A réteg- és színszándék-váltások újrahasznosítható állapotvariánsokat választanak ahelyett, hogy minden gyorsítótárazott bitmapot eldobnának
- A PNG és index frissítések atomiak, az elhagyott ideiglenes fájlok a helyreállítás során törlődnek
- Az oldalolvasások frissítik az oldalszintű frissességet, míg a dokumentumszám, az oldalszám és a bájtkorlát kilakoltatja a legrégebben használt adatokat
- Egy beállított korlát csökkentése azonnal konvergál, ahelyett hogy egy későbbi írásra várna
- A sérült PNG-fájlok, az elavult vagy duplikált indexsorok, a hiányzó mappák és az index nélküli gyorsítótármappák automatikusan javításra kerülnek
- Az érvénytelen dokumentumkulcsok és koordináták a fájlrendszer-hozzáférés előtt elutasításra kerülnek
- A csatolt dokumentummappák kimaradnak a helyreállítás, az olvasás, az írás, az érvénytelenítés és a kilakoltatás során; a linkek és azok külső célfájljai megőrződnek
Tulajdonjog
- A
THPDFWeightedCachebirtokolja aPutszámára átadott értékeket, hacsak egy értéket nem azExtractad vissza - A
THPDFDiskPageCache.Lookupegy újonnan lefoglalt, a hívó tulajdonában lévő bitképet ad vissza - A
THPDFDiskPageCache.Storeszámára átadott bitképértékek a hívó tulajdonában maradnak
Kapcsolódó API-k
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- THotPDF.GetImageDecodeConcurrencyInfo
- THotPDF.RenderCacheFolder
- THotPDF.RenderCacheMaxDocuments
- THotPDF.RenderCacheMaxBytes
- THotPDF.RenderLoadedPageToBitmapCached
- Rendering Diagnostics and Operation Telemetry