Ladění výkonu
Optimalizace vykreslování a paměti
Profil zdrojů Doconutu je ovládán třemi věcmi: render DPI, co zůstává v keši, a jak dlouho relace žijí. Tento průvodce popisuje ovládací prvky v pořadí podle dopadu.
Rozlišení — největší páka
ImageResolution (25–300 DPI) určuje jak dobu vykreslování, tak velikost obrázku. Většina formátů má výchozí hodnotu 200 DPI; obrázky a PSD mají výchozí 100.
// A document list preview doesn't need print quality
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { ImageResolution = 100 });Poloviční DPI přibližně čtvrtí počet pixelů na stránku — rychlejší vykreslování, menší přenosy, méně paměti pro keš. Rezervujte 250–300 DPI pro případy s častým přiblížením (CAD, technické výkresy).
U PDF s velkým množstvím vložených obrázků PdfConfig přidává jemnější ovladače: CompressImages + CompressQuality, ResizeImages + ResizeResolution a CompressFast. U běžných obrázků ImageConfig.MaxImagePixelSize (výchozí 3000 px) omezuje velikost výstupu.
Kešování stránek — paměť vs. opětovné vykreslení
BaseConfig.CachePages (výchozí true) uchovává každou vykreslenou stránku v paměti po celou dobu životnosti relace. To je správné výchozí nastavení pro interaktivní prohlížení — uživatelé posouvají dopředu i dozadu. Vypněte jej, když:
- dokumenty jsou obrovské a jsou prohlíženy jednou, od začátku do konce,
- mnoho souběžných relací by násobilo počet kešovaných stránek,
- raději zaplatíte CPU za zobrazení než budete držet RAM.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { CachePages = false });Na klientovi ViewerConfig.CacheEnabled = true přednačítá malé posouvající se okno nadcházejících obrázků stránek v paměti prohlížeče. Jedná se o keš přednačítání pro konkrétní zobrazení, nikoli trvalý localStorage.
Relace — paměť, kterou nevidíte
Každá otevřená relace drží parsovaný model dokumentu plus (s CachePages) jeho vykreslené stránky, dokud neuplyne posuvný TimeOut (výchozí 60 minut) od posledního požadavku. Dvě návyky udržují tuto paměť pod kontrolou:
- Zavřete, s čím jste skončili.
viewer.CloseDocument(token)uvolní engine okamžitě místo čekání na nečinné okno. - Správně nastavte časový limit. Náhled, na který se uživatelé podívají dva minuty, nepotřebuje hodinovou relaci:
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });Pamatujte na kompromis: po vypršení časového limitu widget zobrazí Document session not found. Please re-open document. — zvolte časový limit, který odpovídá skutečným čtecím relacím.
Formátově specifické přepínače
- Excel:
MemoryOptimizationPreferenceje ve výchozím nastavení zapnutý a snižuje paměťovou stopu při vykreslování velmi velkých sešitů — nechte jej zapnutý, nebo jej nastavte nafalse, pokud chcete vyměnit paměť za malý nárůst rychlosti;SheetNames/PrintAreaomezují vykreslování na to, co je podstatné. - Režim přesměrování má počáteční náklad:
DefaultRender = falsepřevádí celý dokument do PDF při otevření. Zajišťuje nativní textové vyhledávání, ale u 500stránkového dokumentu otevření zahrnuje tuto konverzi — neaktivujte jej reflexivně. - Word/PPT na Linux/Docker: chybějící fonty způsobují pomalé fallbackové zkoušení a špatné metriky; nasměrujte
FontFoldersna adresář s vašimi fonty. - Prezentace na Linux/macOS: soubory PPT/PPTX/PPS/POT/ODP lze otevřít, ale vykreslování pomocí současného enginu prezentací vyžaduje nativní
libgdiplusa přepínač běhového prostředíSystem.Drawing.EnableUnixSupport=true. Ostatní formátové rodiny používají běžnou multiplatformní cestu vykreslování.
Strategie na straně klienta
LargeDoc = true— strategie líného načítání pro velmi velké dokumenty; stránky se načítají, jak se uživatel k nim přibližuje.AutoLoad = false(výchozí) — nevykreslujte, dokud nepovoláteView(token).ShowThumbs = false— přeskočte generování/požadavky na miniatury u jednostránkových nebo vložených náhledů.- Povolení
FixedZoomzabraňuje volným změnám přiblížení; když mapujete C#ViewerConfig, nastavteFixedZoomPercentMobile(výchozí C# 75) pro malé obrazovky.
Spuštění jednou, ne při každém požadavku
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) patří do Program.cs — registrace kódování při každém požadavku je zbytečná práce; úplné zapomenutí na to rozbije starší dokumenty s kódovými stránkami.
Kontrolní seznam ladění
- Nastavte nejnižší
ImageResolution, kterou vaše UX akceptuje. - Nechte
CachePageszapnuté pro interaktivní prohlížení; vypněte jej pro jednorázové nebo vysoce souběžné scénáře. - Explicitně zavírejte relace; zkracujte
TimeOut, kde je používání burstové. - Použijte
LargeDoc+ výchozíAutoLoad = falsena klientovi pro velké dokumenty. - Použijte
DefaultRender = falsepouze když potřebujete PDF projekci s textem.
Byla tato stránka užitečná?