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 hidup. Panduan ini menjelaskan tuas‑tuasnya berdasarkan dampak.
Resolusi — tuas terbesar
ImageResolution (25–300 DPI) mengendalikan baik waktu render maupun ukuran gambar. Kebanyakan format memiliki nilai default 200 DPI; gambar dan PSD memiliki default 100.
// Pratinjau daftar dokumen tidak memerlukan kualitas cetak
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. Simpan 250–300 DPI untuk kasus penggunaan yang banyak melakukan zoom (CAD, gambar teknik).
Untuk PDF dengan banyak gambar tersemat, PdfConfig menambahkan pengaturan 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 hidup sesi. Itu adalah nilai default yang tepat untuk tampilan interaktif — pengguna dapat menggulir maju mundur. Nonaktifkan 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 berisi gambar halaman yang akan datang ke memori browser. Itu adalah cache prefetch per‑tampilan, bukan localStorage yang persisten.
Sesi — memori yang tidak Anda lihat
Setiap sesi yang terbuka menyimpan model dokumen yang telah diurai plus (dengan CachePages) halaman yang dirender, hingga TimeOut bergulir (default 60 menit) berakhir sejak permintaan terakhir. Dua kebiasaan menjaga hal ini tetap terkendali:
- Tutup apa yang sudah selesai Anda gunakan.
viewer.CloseDocument(token)membebaskan mesin secara langsung 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 workbook yang sangat besar — biarkan tetap aktif, atau setel kefalsejika Anda rela menukar memori dengan sedikit peningkatan kecepatan;SheetNames/PrintAreamembatasi rendering hanya pada yang penting. - Mode pengalihan 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) seharusnya 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‑pass atau dengan tingkat 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?