Prestandaoptimering
Optimera rendering och minne
Doconuts resursprofil domineras av tre saker: render DPI, vad som hålls i cache, och hur länge sessioner lever. Denna guide går igenom reglagen i ordning efter påverkan.
Upplösning — det största reglaget
ImageResolution (25–300 DPI) styr både renderingtiden och bildstorleken. De flesta format har standard på 200 DPI; bilder och PSD har standard på 100.
// A document list preview doesn't need print quality
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { ImageResolution = 100 });Att halvera DPI minskar ungefär pixelantalet per sida till en fjärdedel — snabbare rendering, mindre överföringar, mindre cacheminne. Reservera 250–300 DPI för zoomintensiva användningsfall (CAD, ingenjörsritningar).
För PDF-filer med tung inbäddad grafik lägger PdfConfig till finare reglage: CompressImages + CompressQuality, ResizeImages + ResizeResolution och CompressFast. För vanliga bilder begränsar ImageConfig.MaxImagePixelSize (standard 3000 px) utskriftsstorleken.
Sidcachning — minne vs. återrendering
BaseConfig.CachePages (standard true) behåller varje renderad sida i minnet under sessionens livstid. Det är rätt standard för interaktiv visning — användare scrollar fram och tillbaka. Stäng av den när:
- dokumenten är enorma och visas en gång, från början till slut,
- många samtidiga sessioner skulle multiplicera de cachade sidorna,
- du föredrar att betala CPU per visning snarare än att hålla RAM.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { CachePages = false });På klienten laddar ViewerConfig.CacheEnabled = true förhands en liten rörlig fönster av kommande sidbilder i webbläsarens minne. Det är en per‑visning förhämtningcache, inte ett bestående localStorage.
Sessioner — minnet du inte ser
Varje öppen session håller den analyserade dokumentmodellen plus (med CachePages) dess renderade sidor, tills den glidande TimeOut (standard 60 minuter) löper ut sedan den senaste begäran. Två vanor håller detta under kontroll:
- Stäng det du är klar med.
viewer.CloseDocument(token)frigör motorn omedelbart istället för att vänta på den inaktiva perioden. - Anpassa timeouten. En förhandsgranskning som användare tittar på i två minuter behöver inte en timmes session:
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });Kom ihåg avvägningen: efter utgången visar widgeten Document session not found. Please re-open document. — välj en timeout som matchar verkliga lässessioner.
Format‑specifika växlar
- Excel:
MemoryOptimizationPreferenceär på som standard och minskar minnesfotavtrycket vid rendering av mycket stora arbetsböcker — låt den vara på, eller sätt den tillfalseom du vill byta minne mot en liten hastighetsökning;SheetNames/PrintAreabegränsar rendering till det som är relevant. - Redirect‑läge har en initial kostnad:
DefaultRender = falsekonverterar hela dokumentet till PDF vid öppning. Det ger inbyggd textbaserad sökning, men på ett 500‑sidigt dokument medför öppningsanropet den konverteringen — aktivera det inte reflexivt. - Word/PPT på Linux/Docker: saknade typsnitt orsakar långsam fallback‑undersökning och felaktiga mått; peka
FontFoldersmot en katalog med dina typsnitt. - Presentationer på Linux/macOS: PPT/PPTX/PPS/POT/ODP‑filer kan öppnas, men rendering med den nuvarande presentationsmotorn kräver native
libgdiplusoch runtime‑växelnSystem.Drawing.EnableUnixSupport=true. Andra formatfamiljer använder den vanliga plattformsoberoende renderingsvägen.
Klientsidstrategier
LargeDoc = true— lat laddningsstrategi för mycket stora dokument; sidor laddas när användaren närmar sig dem.AutoLoad = false(standard) — rendera inte förrän du faktiskt anroparView(token).ShowThumbs = false— hoppa över generering/förfrågningar av miniatyrer för enkelsidiga eller inbäddade förhandsgranskningar.- Att aktivera
FixedZoomundviker fri zoomning; när du mappar en C#ViewerConfig, justeraFixedZoomPercentMobile(C# standard 75) för små skärmar.
Starta en gång, inte per begäran
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) bör placeras i Program.cs — att registrera kodningar per begäran är slöseri; att glömma det helt och hållet förstör äldre dokument med kodsidessidor.
En optimeringschecklista
- Ställ in den lägsta
ImageResolutionsom din UX accepterar. - Behåll
CachePagespå för interaktiv visning; avstängd för engångs- eller högkonkurrensscenarier. - Stäng sessioner explicit; förkorta
TimeOutdär användning är pulserande. - Använd
LargeDoc+ standardAutoLoad = falsepå klienten för stora dokument. - Använd
DefaultRender = falseendast när du behöver en textbärande PDF‑projektion.
Var den här sidan till hjälp?