Βελτιστοποίηση Απόδοσης
Βελτιστοποίηση απόδοσης και μνήμης
Το προφίλ πόρων του Doconut κυριαρχείται από τρία πράγματα: render DPI, what stays cached, και how long sessions live. Αυτός ο οδηγός περιγράφει τις ρυθμίσεις με τη σειρά της επίδρασής τους.
Ανάλυση — ο μεγαλύτερος μοχλός
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 με κείμενο.
Ήταν αυτή η σελίδα χρήσιμη;