Penyetelan Kinerja
Optimalkan rendering dan memori
Profil sumber daya Doconut didominasi oleh tiga hal: render DPI, apa yang tetap di-cache, dan berapa lama sesi berlangsung. Panduan ini menjelaskan tuas‑tuasnya berdasarkan dampak.
Resolusi — tuas terbesar
ImageResolution (25–300 DPI) mengatur baik waktu render maupun ukuran gambar. Kebanyakan format default ke 200 DPI; gambar dan PSD default ke 100.
// A document list preview doesn't need print quality
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { ImageResolution = 100 });Mengurangi DPI menjadi setengah kira‑kira mengurangi empat kali jumlah piksel per halaman — render lebih cepat, transfer lebih kecil, memori cache lebih sedikit. Sisakan 250–300 DPI untuk kasus penggunaan dengan zoom berat (CAD, gambar teknik).
Untuk PDF dengan banyak gambar tersemat, PdfConfig menambahkan kontrol yang lebih halus: CompressImages + CompressQuality, ResizeImages + ResizeResolution, dan CompressFast. Untuk gambar biasa, ImageConfig.MaxImagePixelSize (default 3000 px) membatasi ukuran output.
Caching halaman — memori vs. render ulang
BaseConfig.CachePages (default true) menyimpan setiap halaman yang dirender dalam memori selama masa sesi. Itu adalah default yang tepat untuk tampilan interaktif — pengguna menggulir maju mundur. Matikan ketika:
- dokumen sangat besar dan hanya dilihat sekali, dari depan ke belakang,
- banyak sesi bersamaan akan menggandakan halaman yang di-cache,
- Anda lebih memilih membayar CPU per tampilan daripada menahan RAM.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { CachePages = false });Di sisi klien, ViewerConfig.CacheEnabled = true memuat sebelumnya jendela kecil bergerak dari gambar halaman yang akan datang dalam memori peramban. Itu adalah cache prefetch per tampilan, bukan localStorage yang persisten.
Sesi — memori yang tidak Anda lihat
Setiap sesi terbuka menyimpan model dokumen yang diurai plus (dengan CachePages) halaman yang dirender, sampai TimeOut bergulir (default 60 menit) habis sejak permintaan terakhir. Dua kebiasaan menjaga hal ini tetap terkendali:
- Tutup apa yang sudah selesai Anda gunakan.
viewer.CloseDocument(token)membebaskan mesin segera alih-alih menunggu jendela idle. - Sesuaikan ukuran timeout. Pratinjau yang pengguna lihat selama dua menit tidak memerlukan sesi satu jam:
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });Ingat trade‑offnya: setelah kedaluwarsa widget menampilkan Document session not found. Please re-open document. — pilih timeout yang sesuai dengan sesi membaca yang sebenarnya.
Saklar khusus format
- Excel:
MemoryOptimizationPreferenceaktif secara default dan mengurangi jejak memori saat merender buku kerja yang sangat besar — biarkan tetap aktif, atau set kefalsejika Anda menukar memori untuk sedikit peningkatan kecepatan;SheetNames/PrintAreamembatasi rendering hanya pada yang penting. - Mode redirect memiliki biaya awal:
DefaultRender = falsemengonversi seluruh dokumen ke PDF saat dibuka. Ini memungkinkan pencarian berbasis teks secara native, tetapi pada dokumen 500 halaman panggilan buka membawa konversi tersebut — jangan aktifkan secara refleksif. - Word/PPT di Linux/Docker: font yang hilang menyebabkan probing fallback yang lambat dan metrik yang salah; arahkan
FontFolderske direktori yang berisi font Anda. - Presentasi di Linux/macOS: file PPT/PPTX/PPS/POT/ODP dapat dibuka, tetapi rendering dengan mesin presentasi saat ini memerlukan
libgdiplusnative dan saklar runtimeSystem.Drawing.EnableUnixSupport=true. Keluarga format lain menggunakan jalur rendering lintas‑platform standar.
Strategi sisi klien
LargeDoc = true— strategi lazy‑load untuk dokumen sangat besar; halaman dimuat saat pengguna mendekatinya.AutoLoad = false(default) — jangan render sampai Anda benar‑benar memanggilView(token).ShowThumbs = false— lewati pembuatan/permintaan thumbnail untuk pratinjau satu halaman atau tersemat.- Mengaktifkan
FixedZoommenghindari perubahan zoom bebas; ketika Anda memetakanViewerConfigC#, aturFixedZoomPercentMobile(default C# 75) untuk layar kecil.
Mulai sekali, bukan per permintaan
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) harus berada di Program.cs — mendaftarkan encoding per permintaan adalah pekerjaan yang terbuang; melupakannya sepenuhnya merusak dokumen kode‑halaman lama.
Daftar periksa penyetelan
- Tetapkan
ImageResolutionterendah yang dapat diterima UX Anda. - Biarkan
CachePagesaktif untuk tampilan interaktif; nonaktifkan untuk skenario satu kali atau dengan konkurensi tinggi. - Tutup sesi secara eksplisit; perpendek
TimeOutbila penggunaan bersifat bursty. - Gunakan
LargeDoc+AutoLoad = falsedefault di sisi klien untuk dokumen besar. - Gunakan
DefaultRender = falsehanya ketika Anda memerlukan proyeksi PDF yang berisi teks.
Apakah halaman ini membantu?