2009-10-10 10 views

risposta

19

Sono disponibili diverse opzioni per ridurre il ViewState:

  • Disabilita ViewState per i controlli che non ne hanno bisogno (questa è la soluzione più efficace). Per esempio. se è possibile memorizzare nella cache alcuni dati sul server, è possibile associare nuovamente tutti i controlli del database con ogni richiesta e non è necessario salvare tutto in ViewState.
  • Attivare la compressione HTTP sul server (IIS). Ciò riduce la dimensione della pagina inviata al client, incluso il ViewState.
  • Comprimi il ViewState. Ciò ha un ulteriore vantaggio rispetto alla compressione HTTP: riduce anche la dimensione dei PostBack (dati inviati al server), dal momento che ViewState viene sempre restituito al server durante un PostBack. Esistono vari approcci per questo, ad es. come mostrato in this blog post.
  • Memorizzare ViewState sul server invece di inviarlo in un campo nascosto con la pagina. Il modo più semplice per farlo è usare lo SesionPageStatePersister, ma ci sono altre soluzioni che memorizzano ViewState su disco invece di usare la sessione (see here for example).
+0

Belle idee da provare !!! – Lijo

+0

ottima risposta! grazie! Ma anche se memorizzare lato server viewstate o comprimerlo potrebbe essere un buon metodo, a mio parere il modo più semplice per ridurne le dimensioni sarà comunque disabilitare i controlli che non richiedono il link dead link linkstate – Shide

1

Non è possibile ridurre a icona le dimensioni di ViewState. È ASP.NET che serializza/deserializza. Sebbene tu possa disabilitare ViewState in modo selettivo per i controlli che non ne hanno bisogno.

+0

Puoi comprimerlo e salvarlo nel tuo campo modulo –

0

È possibile attivare la compressione sul server per ridurre al minimo la dimensione dei dati trasferiti attraverso la rete o salvare viewState su disco e non inviarlo mai al client.

4

La maggior parte dei punti è evidenziata nelle altre risposte. Ecco uno che potrebbe essere utile:

Ridurre il numero di controlli del server (ad esempio controlli web/html) in particolare quelli che non sono necessari. Utilizzare invece semplici markup HTML.

Ho visto troppi casi di controlli Web ridondanti Tabella/riga/cella in cui la normale tabella <>, < tr> e < td farà.

1

Ho scelto di salvare lo stato di visualizzazione sul server in un database e di non consentirne il passaggio nell'HTML al client, il che appesantisce le dimensioni della pagina. È possibile estendere HiddenFieldPageStatePersister e aggirare questo problema. Ho scritto un articolo dettagliato intorno a questo, se si desidera ...

http://ashishnangla.com/2011/07/21/reducing-size-of-viewstate-in-asp-net-webforms-by-writing-a-custom-viewstate-provider-pagestatepersister-part-12/

+0

dead link – Ash

0
protected override PageStatePersister PageStatePersister 
    { 
     get 
     { 
      return new SessionPageStatePersister(this); 
     } 
    } 

aggiungere il codice di cui sopra nel codice dietro della pagina che genera valori ViewState grandi. Ciò consente di memorizzare il viewstate nella sessione. Ora dovrebbe essere aggiunta solo una chiave per il viewstate.

Problemi correlati