Domanda

Con i controlli utente su una pagina, capisco che ogni controllo ha un impatto sull'utilizzo della memoria memorizzando il proprio stato in ViewState. La mia domanda è: quanto?

Ad esempio - Ho un modulo di feedback come controllo sulla mia pagina principale. È impostato su Visible = " false " per impostazione predefinita. Un utente fa clic su un pulsante di feedback e il controllo diventa visibile mentre è necessario.

Quale sarebbe l'impatto relativo sulle prestazioni avendo il controllo seduto su everypage (dato che si trova nella pagina principale), ma non visibile? Il sito che sto sviluppando potenzialmente avrà una grande quantità di traffico e mi chiedo se in seguito mi farò venire il mal di testa se le cose diventano lente.

Grazie

È stato utile?

Soluzione

Le prestazioni potrebbero essere influenzate sul server e sul client. Innanzitutto si desidera ridurre la quantità di HTML incluso viewstate che viene inviato al client. Se questo si trova su ogni pagina, invierai queste informazioni viewstate più spesso di quanto sia realmente necessario.

Penso che dovresti avere una logica che assicuri che il controllo del modulo di feedback sia aggiunto solo alla pagina di feedback. Invece di usare visible = " false " ;, inseriscilo nella sua pagina e collegalo a esso, oppure aggiungi dinamicamente il controllo alla pagina.

I principali vantaggi saranno la riduzione dell'utilizzo della larghezza di banda e un rendering più veloce della pagina sul client. I vantaggi secondari includono un debug più semplice e un rendering del codice più pulito per il client.

Con tutti i problemi di prestazioni dovresti testare le prestazioni ed esprimere giudizi sulla base di dati concreti. In questo caso, calcolare la dimensione del viewstate sul client, quindi moltiplicare per il numero di richieste per vedere la dimensione dell'utilizzo della larghezza di banda sul server. Sul client utilizzare uno strumento come FireBug per comprendere le dimensioni complessive della pagina ricevute dal client.

Altri suggerimenti

Dipende dal controllo. Datagrid con centinaia di righe potrebbe generare 100k di viewstate. D'altra parte, la casella di controllo non genererà troppo.

Puoi semplicemente rilasciare il controllo del modulo di feedback su una pagina aspx vuota, visitarlo nel browser e controllare il campo nascosto __viewstate. Questo è quanto aggiungerai il modulo di feedback a ciascuna pagina in termini di viewstate. Quindi dovrai decidere se è accettabile.

Non vorrei pensare a tali ottimizzazioni proprio all'inizio. Se in seguito diventerà lento, puoi sempre modificare il modulo in HTML puro e utilizzare Ajax o qualcosa del genere per pubblicarlo sul server. Finché è controllo utente e non copia il contenuto incollato, sarà facile ottimizzare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top