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.

csharp
// 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.
csharp
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:
csharp
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: MemoryOptimizationPreference varsayı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 ederseniz false olarak ayarlayın; SheetNames / PrintArea render'ı sadece önemli olanlarla sınırlar.
  • Yönlendirme modu önceden bir maliyet gerektirir: DefaultRender = false belgeyi 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 libgdiplus ve çalışma zamanı anahtarı System.Drawing.EnableUnixSupport=true gerektirir. 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# ViewerConfig eşleştirirken, küçük ekranlar için FixedZoomPercentMobile'ı (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

  1. Kullanıcı deneyiminizin kabul ettiği en düşük ImageResolution değerini ayarlayın.
  2. 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ı.
  3. Oturumları açıkça kapatın; kullanım dalgalı olduğunda TimeOut'u kısaltın.
  4. Büyük belgeler için istemci tarafında LargeDoc + varsayılan AutoLoad = false kullanın.
  5. DefaultRender = false yalnızca metin‑taşıyan bir PDF projeksiyonuna ihtiyacınız olduğunda kullanın.

Bu sayfa yardımcı oldu mu?