Performans Ayarı

Render ve belleği optimize edin

Doconut'un kaynak profili üç şey tarafından hâkimdir: render DPI, önbellekte ne kalır, ve oturumların ne kadar sürdüğü. Bu kılavuz, etkileri sırasına göre kolları gösterir.

Çö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ı render, daha küçük transferler, daha az önbellek belleği. Yakınlaştırma yoğun kullanım senaryoları (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 piksel) çıktı 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ı katlayacaktır,
  • 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, per-view ö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ı, kayar 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 penceresini beklemek yerine.
  • Zaman aşımını doğru ayarlayın. Kullanıcıların iki dakika göz attığı bir önizleme bir saatlik oturuma ihtiyaç duymaz:
csharp
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });

Değiş tokuşu hatırlayın: süresi dolduktan sonra widget Document session not found. Please re-open document. mesajını gösterir — gerçek okuma oturumlarıyla eşleşen bir zaman aşımı seçin.

Biçim-özgü anahtarlar

  • Excel: MemoryOptimizationPreference varsayılan olarak açıktır ve çok büyük çalışma kitapları render edilirken 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'i sadece önemli olanla sınırlamaya yarar.
  • 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 üzerindeki Word/PPT: eksik yazı tipleri yavaş geri dönüş denemelerine ve hatalı ölçümlere neden olur; FontFolders'ı yazı tiplerinizin bulunduğu bir dizine yönlendirin.
  • Linux/macOS üzerindeki 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ı stratejileri

  • 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 etkinleştirmek serbest biçimli yakınlaştırma değişikliklerini önler; bir C# ViewerConfig eşlediğinizde, küçük ekranlar için FixedZoomPercentMobile (C# varsayılan 75) ayarlayın.

Başlangıç bir kez, istek başına değil

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) Program.cs içinde bulunmalıdır — kod sayfalarını istek başına kaydetmek boşa iş olur; tamamen unutmak eski kod sayfası belgelerini bozar.

İşi düğümler arasında dağıtma

Yukarıdakiler, talep üzerine tek bir düğümün render'ını ayarlar. Tek bir düğüm yükü kaldıramadığında, bir sonraki kol daha büyük bir ayar değildir — bir belgenin artefaktlarını bir kez paylaşımlı depolamaya yayınlamak ve her düğümün bunları sunmasına izin vermektir. Bu, maliyet modelini değiştirir: render, oturum başına değil belge başına bir kez gerçekleşir ve sayfa istekleri dosya okumasına dönüşür. Dağıtık Dağıtımlar bölümüne bakın.

Bir ayar kontrol listesi

  1. ImageResolution için UX'inizin kabul edebileceği en düşük değeri ayarlayın.
  2. Etkileşimli görüntüleme için CachePages 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 patlamalı olduğunda TimeOut süresini kısaltın.
  4. Büyük belgeler için istemci tarafında LargeDoc ve varsayılan AutoLoad = false kullanın.
  5. DefaultRender = false yalnızca metin içeren bir PDF projeksiyonuna ihtiyacınız olduğunda kullanın.

Bu sayfa yardımcı oldu mu?