Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Visible των controls και επιβάρυνση του server!

Îåêßíçóå áðü ôï ìÝëïò gspiros. Τελευταία δημοσίευση από το μέλος George J. Capnias στις 07-04-2007, 00:31. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-04-2007, 20:09 27983

    Visible των controls και επιβάρυνση του server!

    Δεν ξέρω αν ο τίτλος είναι ο καταλληλότερος, αλλά δεν μπόρεσα να σκεφτώ καλύτερο...

    Λοιπόν, έχω φτιάξει μια βάση στην οποία αποθηκεύονται messages διάφορων users.
    Στην σελίδα του admin έχω μια σελίδα, από την οποία μπορώ να διαβάζω τα messages σαν Read και σαν Unread (όταν κάποιο message διαβάζεται, τότε αυτό χαρακτηρίζεται σαν Unread).

    Σε αυτήν την σελίδα του admin έχω 2 gridview (ένα για τα Read messages και ένα για τα Unread messages), 2 sqldatasource (ένα για κάθε gridview), ένα Button και ένα mutliview.
    Το Button όταν πατιέται, απλά θα εναλλάζει τα 2 gridview (με χρήση του multiview), δηλαδή θα κάνει το ένα view1.visible=true και το άλλο view2.visible=false.

    Ξέρω ότι όταν ένα control είναι visible=false, τότε δεν στέλνεται κώδικας html από τον server για αυτό το control.
    Κάθε φορά λοιπόν που γίνεται η εναλλαγή, θα πρέπει η σελίδα να επικοινωνεί με την βάση και τον server, για να στέλνεται κώδικας html του control όπου έχει visible=true.

    Η ερώτησή μου είναι η εξής:
    Κάθε φορά που γίνεται η εναλλαγή, υπάρχει επικοινωνία με την βάση και τον server, σωστά?

    Γίνεται μέσω SqlDataSource κάθε φορά που κάνω εναλλαγή να μην χρειάζεται επικοινωνία με την βάση ή τον server (να αποθηκεύονται τα δεδομένα κάπου στον client δηλαδή)???
    (Εννοώ ότι μόνο την πρώτη φορά θα χρειάζεται να λάβω τα δεδομένα).

    Για να μην επιβαρύνω την βάση σκέφτηκα την χρήση Session, αλλά τότε θα έχω επικοινωνία με τον Server.
    Γενικά υπάρχει κάποια λύση στο πρόβλημα αυτό???

    Για να γενικεύσω λιγάκι την απορία μου, ποιά είναι η καλύτερη μέθοδος (Session, DataSet.....) για να έχω λιγότερη επιβάρυνση?
    Έχει αντιμετωπίσει κάποιος άλλος αυτό το πρόβλημα?

    P.S. Τα δεδομένα του DataSet, αποθηκεύονται στον server ή στον client?
  •  06-04-2007, 11:07 28068 σε απάντηση της 27983

    Απ: Visible των controls και επιβάρυνση του server!

    Πριν φτάσεις στην έννοια του session και του application που έχουν να κάνουν με την μνήμη του server, ας μείνουμε στο ViewState που περιορίζεται στην σελίδα.

    Κάθε σελίδα φορτώνεται την πρώτη φορά που ο χρήστης προσπαθεί να την προσπελάσει. Όταν ο χρήστης χρησιμοποιήσει κάποιο control επάνω στην σελίδα, τότε δημιουργείται ένα postback event. Ο μηχανισμός της σελίδας είναι σε θέση να το καταλάβει κατά την διάρκεια του Load event της σελίδας και να μην χρειαστεί να ξαναφορτώσει όλα τα δεδομένα της σελίδας. Αυτό γίνεται μόνο στην περίπτωση που είναι ενεργοποιημένο το ViewState.

    Στην πραγματικότητα τα δεδομένα, που έχουν φορτωθεί με την αρχικά με την σελίδα και έχουν "cachαριστεί" μέσα σε αυτή και έχουν μεταφερθεί στον client. Οταν προκαλείται το postback ο μηχανισμός της σελίδας ξαναφορτώνει από το "cache" τα δεδομένα και δεν απαιτείται να το κάνεις δεύτερη φορά.

    Στην περίπτωσή σου, την πρώτη φορά που ο χρήστης επισκέπτεται την σελίδα, φορτώνονται όλα τα δεδομένα και μπαίνουν στο  viewstate της σελίδας. Ο χρήστης βλέπει τα εισερχόμενα, και όταν επιλέξει να δει τα εξερχόμενα και γίνει το postback ανάλογα το μηχανισμό ή τον κώδικα που έχεις γράψει διαβάζει τα cachαρισμένα δεδομένα ή τα φορτώνει ξανά. Αν έχεις γράψει εσύ τον κώδικα στο Load Event της σελίδας και δεν παίρνεις υπόψη σου ότι είναι postback τότε τα ξαναφορτώνεις. Αν έχεις αφήσει τα controls να το κάνουν μόνα τους, τότε δεν ξαναφορτώνουν τα δεδομένα.

    Ο αυτόματος τρόπος είναι αρκετά καλός σε απόδοση, δεν κουράζει τον server και ξαναχρησιμοποιεί τα cachαρισμένα δεδομένα. Ο όγκος των δεδομένων όμως μπορεί να είναι ανασταλτικός παράγοντας, αφού γράφονται μέσα στην σελίδα που πάει στον χρήση, και όσο περισσότερα, τόσο μεγαλύτερη γίνεται.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  06-04-2007, 13:43 28086 σε απάντηση της 28068

    Απ: Visible των controls και επιβάρυνση του server!

    Σε ευχαριστώ πολύ!
    Μήπως θα μπορούσες να μου πεις περισσότερα για τον "μηχανισμό ή τον κώδικα" που αναφέρεις?
    Μιλάς για μια απλή if, της μορφής:
    if(!Page.IsPostBack)
    {
        .....
    }
    ???
    Πως θα το κάνω να διαβάζει τα cached?
    Θέλει πολύ δουλειά αυτό?

    Επίσης κάτι άλλο που σκέφτηκα για την σελίδα.
    Μήπως θα ήταν καλύτερα να βάλω μόνο ένα gridview (αντί δύο) και απλά να αλλάζω το DataSource του (μέσω κώδικα), στο ανάλογο SqlDataSource???
    Αυτό θα είχε καμιά βελτίωση (σε οποιοδήποτε θέμα)?
    Σε αυτήν την περίπτωση βέβαια, θα χρειάζεται να ξαναφορτώνει τα δεδομένα...
  •  07-04-2007, 00:31 28115 σε απάντηση της 28086

    Απ: Visible των controls και επιβάρυνση του server!

    Ναι, για στο Page.IsPostBack αναφέρομαι.

    Το να είχες ένα grid και όχι δύο θα βοηθούσε να έχεις λιγότερα resources που πηγαινοέρχονται στον client και από μόνο του αυτό βοηθάει και είναι καλύτερο. Δεν χρειάζεται να ξαναφορτώσεις τα δεδομένα - μπορείς να αποθηκεύσεις τα δεδομένα σου στο ViewState και να τα "σηκώσεις" στο postback.

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems