Βελτιστοποίηση Απόδοσης
Βελτιστοποίηση απόδοσης και μνήμης
Το προφίλ πόρων του Doconut κυριαρχείται από τρία στοιχεία: render DPI, τι παραμένει στην προσωρινή μνήμη, και πόσο διαρκούν οι συνεδρίες. Αυτός ο οδηγός εξηγεί τις ρυθμίσεις με σειρά προτεραιότητας.
Ανάλυση — η μεγαλύτερη ρυθμιζόμενη παράμετρος
ImageResolution (25–300 DPI) καθορίζει τόσο τον χρόνο απόδοσης όσο και το μέγεθος της εικόνας. Τα περισσότερα φορμάτ έχουν προεπιλογή 200 DPI· οι εικόνες και τα PSD έχουν προεπιλογή 100.
// A document list preview doesn't need print quality
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { ImageResolution = 100 });Η μείωση του DPI στο μισό μειώνει περίπου κατά τέσσερα τον αριθμό των εικονοστοιχείων ανά σελίδα — ταχύτερη απόδοση, μικρότερες μεταφορές, λιγότερη μνήμη προσωρινής αποθήκευσης. Κρατήστε 250–300 DPI για περιπτώσεις χρήσης με έντονο ζουμ (CAD, τεχνικά σχέδια).
Για PDF με έντονη ενσωματωμένη εικονογράφηση, το PdfConfig προσθέτει πιο λεπτές ρυθμίσεις: CompressImages + CompressQuality, ResizeImages + ResizeResolution και CompressFast. Για απλές εικόνες, το ImageConfig.MaxImagePixelSize (προεπιλογή 3000 εικ. px) περιορίζει το μέγεθος εξόδου.
Προσωρινή αποθήκευση σελίδων — μνήμη vs. επανα-απόδοση
BaseConfig.CachePages (προεπιλογή true) διατηρεί κάθε αποδοθείσα σελίδα στη μνήμη για όλη τη διάρκεια της συνεδρίας. Αυτό είναι η σωστή προεπιλογή για διαδραστική προβολή — οι χρήστες κυλούν μπρος‑πίσω. Απενεργοποιήστε το όταν:
- τα έγγραφα είναι τεράστια και προβάλλονται μία φορά, από την αρχή μέχρι το τέλος,
- πολλές ταυτόχρονες συνεδρίες θα πολλαπλασιάσουν τις αποθηκευμένες σελίδες,
- προτιμάτε να χρησιμοποιήσετε CPU ανά προβολή αντί να κρατάτε RAM.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig { CachePages = false });Στον πελάτη, το ViewerConfig.CacheEnabled = true προφορτώνει ένα μικρό κινούμενο παράθυρο από επερχόμενες εικόνες σελίδων στη μνήμη του προγράμματος περιήγησης. Είναι προσωρινή προφόρτωση ανά προβολή, όχι μόνιμο localStorage.
Συνεδρίες — η μνήμη που δεν βλέπετε
Κάθε ανοιχτή συνεδρία κρατά το αναλυμένο μοντέλο εγγράφου συν (με CachePages) τις αποδοθείσες σελίδες, μέχρι να λήξει το κυλιόμενο TimeOut (προεπιλογή 60 λεπτά) από το τελευταίο αίτημα. Δύο συνήθειες το διατηρούν υπό έλεγχο:
- Κλείστε ό,τι δεν χρειάζεστε.
viewer.CloseDocument(token)ελευθερώνει τη μηχανή αμέσως αντί να περιμένει το παράθυρο αδράνειας. - Ρυθμίστε σωστά το χρονικό όριο. Μια προεπισκόπηση που οι χρήστες ρίχνουν μια ματιά για δύο λεπτά δεν χρειάζεται συνεδρία μιας ώρας:
var token = await viewer.OpenDocumentAsync(path, new DocOptions { TimeOut = 10 });Θυμηθείτε την ανταλλαγή: μετά τη λήξη το widget εμφανίζει Document session not found. Please re-open document. — επιλέξτε ένα χρονικό όριο που ταιριάζει στις πραγματικές συνεδρίες ανάγνωσης.
Ειδικές ρυθμίσεις ανά μορφή
- Excel: το
MemoryOptimizationPreferenceείναι ενεργό από προεπιλογή και μειώνει το αποτύπωμα μνήμης κατά την απόδοση πολύ μεγάλων βιβλίων εργασίας — αφήστε το ενεργό, ή ορίστε το σεfalseαν προτιμάτε να ανταλλάξετε μνήμη για μικρή αύξηση ταχύτητας· ταSheetNames/PrintAreaπεριορίζουν την απόδοση στα απαραίτητα. - Η λειτουργία ανακατεύθυνσης έχει αρχικό κόστος: το
DefaultRender = falseμετατρέπει ολόκληρο το έγγραφο σε PDF κατά το άνοιγμα. Παρέχει εγγενή αναζήτηση κειμένου, αλλά σε έγγραφο 500 σελίδων η κλήση ανοίγματος μεταφέρει αυτή τη μετατροπή — μην το ενεργοποιείτε ακατάπαυστα. - Word/PPT σε Linux/Docker: η έλλειψη γραμματοσειρών προκαλεί αργή εναλλακτική ανίχνευση και λανθασμένα μετρικά; κατευθύνετε το
FontFoldersσε έναν φάκελο με τις γραμματοσειρές σας. - Παρουσιάσεις σε Linux/macOS: τα αρχεία PPT/PPTX/PPS/POT/ODP μπορούν να ανοίξουν, αλλά η απόδοση με την τρέχουσα μηχανή παρουσίασης απαιτεί το εγγενές
libgdiplusκαι τη ρύθμιση χρόνου εκτέλεσηςSystem.Drawing.EnableUnixSupport=true. Άλλες οικογένειες μορφών χρησιμοποιούν τη συνήθη δια‑πλατφορμική διαδρομή απόδοσης.
Στρατηγικές στην πλευρά του πελάτη
LargeDoc = true— στρατηγική lazy‑load για πολύ μεγάλα έγγραφα· οι σελίδες φορτώνονται καθώς ο χρήστης τις προσεγγίζει.AutoLoad = false(προεπιλογή) — μην αποδίδετε μέχρι να καλέσετε πραγματικά τοView(token).ShowThumbs = false— παραλείψτε τη δημιουργία/αίτηση μικρογραφιών για μονοσέλιδες ή ενσωματωμένες προεπισκοπήσεις.- Η ενεργοποίηση του
FixedZoomαποτρέπει τις ελεύθερες αλλαγές ζουμ· όταν αντιστοιχίζετε ένα C#ViewerConfig, ρυθμίστε τοFixedZoomPercentMobile(προεπιλογή C# 75) για μικρές οθόνες.
Εκκίνηση μία φορά, όχι ανά αίτημα
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance) πρέπει να βρίσκεται στο Program.cs — η καταχώρηση κωδικοποιήσεων ανά αίτημα είναι σπατάλη εργασίας· η πλήρης παράλειψή του διασπά έγγραφα παλαιών κωδικοσελίδων.
Λίστα ελέγχου βελτιστοποίησης
- Ορίστε το χαμηλότερο
ImageResolutionπου αποδέχεται η εμπειρία χρήστη (UX). - Διατηρήστε το
CachePagesενεργό για διαδραστική προβολή· απενεργοποιήστε το για μονοδιάστατες ή υψηλής ταυτόχρονης χρήσης περιπτώσεις. - Κλείστε τις συνεδρίες ρητά· μειώστε το
TimeOutόταν η χρήση είναι σποραδική. - Χρησιμοποιήστε
LargeDoc+ προεπιλογήAutoLoad = falseστον πελάτη για μεγάλα έγγραφα. - Χρησιμοποιήστε
DefaultRender = falseμόνο όταν χρειάζεστε μια PDF προβολή με κείμενο.
Ήταν αυτή η σελίδα χρήσιμη;