Performans Ayarı
Render ve belleği optimize edin
Doconut'un kaynak profili üç şey tarafından domine edilir: render DPI, önbellekte ne kalır, ve oturumların ne kadar sürdüğü. Bu kılavuz, etkileri sırasına göre kolları anlatır.
Çözünürlük — en büyük kol
ImageResolution (25–300 DPI) hem render süresini hem de görüntü boyutunu belirler. Çoğu format varsayılan olarak 200 DPI; görüntüler ve PSD varsayılan olarak 100 DPI.
// A document list preview doesn't need print quality
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { ImageResolution = 100 });DPI'yi yarıya indirmek, sayfa başına piksel sayısını yaklaşık dörtte birine düşürür — daha hızlı renderlar, daha küçük transferler, daha az önbellek belleği. Yakınlaştırma ağırlıklı kullanım durumları (CAD, mühendislik çizimleri) için 250–300 DPI ayırın.
Ağır gömülü görseller içeren PDF'lerde, PdfConfig daha ince ayarlar ekler: CompressImages + CompressQuality, ResizeImages + ResizeResolution ve CompressFast. Düz görüntüler için, ImageConfig.MaxImagePixelSize (varsayılan 3000 px) çıkış boyutunu sınırlar.
Sayfa önbellekleme — bellek vs. yeniden render
BaseConfig.CachePages (varsayılan true) oturum süresi boyunca her render edilmiş sayfayı bellekte tutar. Bu, etkileşimli görüntüleme için doğru varsayılandır — kullanıcılar ileri geri kaydırır. Şu durumlarda kapatın:
- belgeler çok büyük ve bir kez, baştan sona görüntüleniyorsa,
- çok sayıda eşzamanlı oturum önbellekli sayfaları katlayacaksa,
- RAM tutmak yerine görüntü başına CPU ödemeyi tercih ediyorsanız.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { CachePages = false });İstemci tarafında, ViewerConfig.CacheEnabled = true tarayıcı belleğinde yaklaşan sayfa görüntülerinin küçük bir hareketli penceresini önceden yükler. Bu, görüntü başına bir önceden getirme önbelleğidir, kalıcı localStorage değildir.
Oturumlar — görmediğiniz bellek
Her açık oturum, ayrıştırılmış belge modelini ve ( CachePages ile) render edilmiş sayfalarını, kayan TimeOut (varsayılan 60 dakika) son istekten itibaren dolana kadar tutar. Bu durumu kontrol altında tutan iki alışkanlık:
- İşiniz bittiğinde kapatın.
viewer.CloseDocument(token)motoru hemen serbest bırakır, boş bekleme süresini beklemek yerine. - Zaman aşımını doğru ayarlayın. Kullanıcıların iki dakika baktığı bir önizleme bir saatlik oturuma ihtiyaç duymaz:
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });Değiş tokuzu hatırlayın: süresi dolduktan sonra widget Document session not found. Please re-open document. mesajını gösterir — gerçek okuma oturumlarına uygun bir zaman aşımı seçin.
Formata özgü anahtarlar
- Excel:
MemoryOptimizationPreferencevarsayılan olarak açıktır ve çok büyük çalışma kitaplarını render ederken bellek ayak izini azaltır — açık bırakın, ya da hafızayı küçük bir hız kazancı için takas etmeyi tercih edersenizfalseolarak ayarlayın;SheetNames/PrintArearender'ı sadece önemli olanlarla sınırlar. - Yönlendirme modu önceden bir maliyet gerektirir:
DefaultRender = falsebelgeyi tamamen açılışta PDF'ye dönüştürür. Yerel metin‑tabanlı arama sağlar, ancak 500 sayfalık bir belgede açma çağrısı bu dönüşümü taşır — otomatik olarak etkinleştirmeyin. - Linux/Docker'da Word/PPT: eksik yazı tipleri yavaş geri dönüş taramasına ve hatalı ölçümlere neden olur;
FontFolders'ı yazı tiplerinizin bulunduğu bir dizine yönlendirin. - Linux/macOS'ta sunumlar: PPT/PPTX/PPS/POT/ODP dosyaları açılabilir, ancak mevcut sunum motoru ile render etmek yerel
libgdiplusve çalışma zamanı anahtarıSystem.Drawing.EnableUnixSupport=truegerektirir. Diğer format aileleri normal çapraz platform render yolunu kullanır.
İstemci‑tarafı stratejiler
LargeDoc = true— çok büyük belgeler için tembel‑yükleme stratejisi; sayfalar kullanıcı yaklaştıkça yüklenir.AutoLoad = false(varsayılan) —View(token)çağırana kadar render etmeyin.ShowThumbs = false— tek sayfalı veya gömülü önizlemeler için küçük resim oluşturmayı/isteklerini atlayın.FixedZoom'i etkinleştirmek serbest zoom değişikliklerini önler; bir C#ViewerConfigeşleştirirken, küçük ekranlar içinFixedZoomPercentMobile'ı (C# varsayılanı 75) ayarlayın.
Tek seferlik başlangıç, her istekte değil
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) Program.cs içinde yer almalı — kod sayfalarını her istekte kaydetmek boşa iş; tamamen unutmak eski kod‑sayfası belgelerini bozar.
Bir ayar kontrol listesi
- Kullanıcı deneyiminizin kabul ettiği en düşük
ImageResolutiondeğerini ayarlayın. - Etkileşimli görüntüleme için
CachePages'i açık tutun; tek geçiş veya yüksek eşzamanlılık senaryoları için kapalı. - Oturumları açıkça kapatın; kullanım dalgalı olduğunda
TimeOut'u kısaltın. - Büyük belgeler için istemci tarafında
LargeDoc+ varsayılanAutoLoad = falsekullanın. DefaultRender = falseyalnızca metin‑taşıyan bir PDF projeksiyonuna ihtiyacınız olduğunda kullanın.
Bu sayfa yardımcı oldu mu?