Optimalizace využití paměti ve velkorozměrných aplikacích pro prohlížení dokumentů
← Back to Blog7 min read

Optimalizace využití paměti ve velkorozměrných aplikacích pro prohlížení dokumentů

Optimalizace využití paměti ve velkorozměrných .NET prohlížečích dokumentů s Doconut
Optimalizace využití paměti ve velkorozměrných .NET prohlížečích dokumentů s Doconut

Máte tisíce PDF, Office souborů nebo CAD výkresů, které chcete zobrazit v .NET‑based portálu? A nechcete, aby váš server došel k nedostatku RAM? Trik spočívá v kombinaci lenivého streamování, cílených pluginů a optimalizovaného renderovacího pipeline Doconut. V následujících sekcích projdeme problémy související s pamětí, které se objevují v podnicích s velkým objemem dokumentů, a ukážeme, jak Doconut — univerzální prohlížeč dokumentů pro .NET back‑endy — odstraňuje úzká místa, která brání tradičním prohlížečům ve škálování. A mimochodem, čeká na vás bezplatná zkušební verze, pokud chcete vidět přínosy ve svém vlastním prostředí.


Porozumění tlaku na paměť v .NET prohlížečích dokumentů

Velké portály s dokumenty často načtou celý soubor do paměti ještě před tím, než se zobrazí první stránka. CAD výkres o velikosti 200 MB nebo PDF s 500 stránkami může rychle zaplnit .NET garbage collector, vyvolat dlouhé GC pauzy a přinutit vás přepočítávat servery.

Proč výchozí .NET renderovací model brání škálovatelnosti

PříznakTypická příčina v naivních implementacích
Out‑of‑memory výjimkyCelé soubory v byte arrayech uložené ve statické cache
Pomalé načtení první stránkyDekódování celého dokumentu před renderováním
Nedostatek vláken v thread‑pooluDlouho běžící CPU‑intenzivní renderovací bloky blokují asynchronní pipeline
Nečekané špičky latenceGC sběr velkých pinned objektů

Přidáte anotace nebo OCR pluginy, které hromadí bitmapy obrázků, a tlak se ještě zvýší. Ideální je zpracovávat jen to, co uživatel právě potřebuje, a udržovat všechny mezilehlé buffery krátkodobé.

Odpověď Doconut: štíhlé, závislostmi optimalizované jádro

Architektura Doconut založená na .NET 6 byla přestavěna tak, aby snižovala alokace na haldě:

  • Optimalizace závislostí — knihovna načítá pouze renderovací moduly potřebné pro aktuální typ souboru (PDF, Office, CAD, obrázek). Nepoužívané pluginy zůstávají mimo paměť, čímž je stopa procesu minimální.
  • Design založený na streamech — soubory jsou otevírány jako streamy, ne jako celé byte arraye, takže runtime může načítat data z disku podle potřeby.
  • Podpora background úloh — těžké konverzní úkoly lze odkládat do worker procesů nebo Azure Functions, což uvolní webovou vrstvu pro interaktivní prohlížení.

Když prohlížeč zkombinujete s asynchronními vzory .NET, Doconut vám umožní obsloužit tisíce souběžných relací na skromném VM clusteru.


Jak povolit lenivé načítání

  1. Zaregistrujte middleware Doconut ve vašem ASP.NET Core pipeline. Middleware zachytává požadavky prohlížeče a injektuje potřebné služby.
  2. Otevírejte dokumenty jako streamy místo načítání celého souboru. Metoda Doconut OpenDocument přijímá cestu k souboru nebo stream a vrací token představující otevřený dokument.
  3. Požadujte stránky na vyžádání z klientské strany. Když front‑end požádá o konkrétní stránku, Doconut načte jen potřebné objekty, vykreslí rastrový obrázek a vrátí lehký thumbnail.

Protože prohlížeč pracuje s streamy, můžete soubory uchovávat v Azure Blob Storage, Amazon S3 nebo on‑premise NAS bez kopírování na lokální disk webového serveru. OS provádí paging a .NET runtime drží jen malé buffery potřebné pro aktivní stránku.

Výhody pro velkorozměrné nasazení

VýhodaJak to Doconut dosahuje
Předvídatelné využití RAMCache stránek pevné velikosti + přístup pouze přes stream
Rychlé vykreslení první stránkyNačte jen hlavičku dokumentu a objekty první stránky
Škálovatelnost napříč prohlížečiStejná stream‑based logika funguje pro HTML5/React, Angular i Vue front‑endy
Snížený tlak na GCŽádné velké pinned byte arraye; všechny buffery jsou krátkodobé

Spojte lenivé načítání s background konverzními úlohami a webová vrstva se nikdy nezastaví kvůli CPU‑intenzivním transformacím.


Pluginy pro anotace a OCR v .NET bez zbytečného zatížení

Podniky milují anotace a vyhledávatelný OCR, ale naivní přístup udržuje bitmapu plného rozlišení každé stránky v paměti jen pro zvýraznění nebo rozpoznání textu. Model pluginů Doconut izoluje tyto funkce do nezávislých, na‑demand služeb.

Anotace – lehké, per‑page řízení

Když se načte stránka, můžete získat správce anotací, který drží jen vektorová data (souřadnice, styl, poznámky). Přidání razítka nebo zvýraznění aktualizuje tento vektorový sklad; podkladová bitmapa se nikdy nekopíruje. Doconut přerenderuje stránku s překryvem jen na požádání klienta, takže i 500‑stránkový PDF s tisíci anotacemi spotřebuje jen zlomek paměti oproti bitmap‑centrickému řešení.

OCR – extrakce textu za běhu

Search Plugin spouští OCR pouze na stránkách, ke kterým uživatel scrolluje. V nastavení dokumentu určíte požadované rozlišení obrázku (např. 200 dpi) a Doconut extrahuje text pro aktuální stránku, výsledek uloží do komprimovaného indexu svázaného s tokenem dokumentu. OCR proces je oddělený od renderování, což vám umožní horizontálně škálovat (např. pomocí Azure Functions) bez zvětšení paměťové stopy webového serveru, který prohlížeč obsluhuje.

Proč je to důležité pro velké podniky

  • Předvídatelné náklady — anotace a OCR běží per‑page, ne per‑document, takže paměť roste lineárně s viditelným obsahem.
  • Připravenost na compliance — anotace jsou uloženy jako XML, což usnadňuje audity nebo redakce.
  • Bezpečnost v multi‑tenant prostředí — každý tenant má svůj token, který izoluje jeho OCR index, čímž se zabrání úniku dat mezi tenanty.

Server‑side konverze a řízený tisk: udržení efektivity zátěže

Mnoho portálů potřebuje konvertovat Office soubory, CAD výkresy nebo e‑mailové zprávy do PDF či obrázkových formátů pro jednotné renderování. Častá past je provádět konverzi v‑processu, což způsobí špičky v RAM a CPU, zatímco uživatel čeká. Converter Plugin od Doconut přesouvá těžkou práci na server‑side službu, kterou můžete horizontálně škálovat.

Konverze bez načtení celého zdrojového souboru

API pro konverzi přijímá vstupní a výstupní cesty (nebo streamy) a pracuje ve streaming režimu, takže zdrojový soubor se nikdy plně neukládá do paměti. Jakmile je PDF (nebo jiný cílový formát) připravené, prohlížeč jej otevře pomocí stejné lenivé načítání techniky popsané výše.

Řízený tisk — vyhněte se rasterizaci celého dokumentu

Při tisku velkých PDF Doconut streamuje tiskové úlohy stránku po stránce do tiskového driveru. Tento přístup vám umožní vynutit kvóty nebo vodoznaky, aniž byste kdy načetli celý dokument do RAM.

Škálování na úrovni podniku

ScénářPaměť‑šetřící technika Doconut
Dávková konverze 10 000 Office souborůPoužijte background workery s stream‑based konverzí; každý worker zpracuje jeden soubor najednou, udržuje RAM nízkou.
On‑demand tisk 5‑ciferných CAD výkresůTisk přes page‑stream; není potřeba rasterizovat celý výkres.
Multi‑tenant SaaS portálOddělené konverzní fronty per tenant; izolace paměti je automatická, protože každá úloha pracuje na svém vlastním streamu.

Nejlepší praktiky pro škálování Doconut v podnikovém prostředí

I když máte paměť‑efektivní engine, reálná nasazení vyžadují několik ochranných opatření. Níže jsou osvědčené postupy, které zesílí vestavěné výhody Doconut.

1. Omezte velikost cache stránek na relaci

Nastavte prohlížeč tak, aby v paměti držel jen nejnovější stránky. Snížení velikosti cache přímo snižuje RAM spotřebu na relaci.

2. Spouštějte OCR a konverzi v izolovaných mikro‑službách

Nasazujte Search Plugin a Converter Plugin jako samostatné kontejnery za zprávovou frontu (RabbitMQ, Azure Service Bus, atd.). To izoluje špičky v paměti a umožní automatické škálování každé komponenty nezávisle.

3. Povolit .NET 6 Trim a ReadyToRun

Při publikování vašeho Doconut‑powered API zapněte trimming, aby se odstranil nepoužívaný IL a zmenšila velikost binárky:

dotnet publish -c Release -r win-x64 --self-contained true /p:PublishTrimmed=true

Menší binárka znamená menší pracovní sadu, což se promítá do nižší RAM spotřeby na kontejner.


Závěr

Optimalizace využití paměti je klíčová pro jakékoli velkorozměrné řešení pro prohlížení dokumentů. Využitím architektury založené na streamech, závislostmi optimalizovaného jádra a on‑demand pluginů pro anotace/OCR od Doconut můžete udržet spotřebu RAM předvídatelnou a zároveň poskytovat rychlé a responzivní prohlížení. Implementujte doporučené best‑practice vzory — distribuovanou tokenovou cache, omezenou cache stránek, izolaci mikro‑služeb a zmenšené buildy — a odemknete plný škálovatelný potenciál Doconut.

Chcete vidět rozdíl na vlastní kůži? Začněte svou bezplatnou zkušební verzi Doconut ještě dnes a zažijte nízko‑paměťové, vysokovýkonné prohlížení dokumentů ve vašich .NET aplikacích.

#document viewer#performance#.NET#enterprise#Doconut#prohlížeč dokumentů#výkon#podniková