ASP.NET Masterpages e viewstate
-
03-07-2019 - |
Domanda
Sto cercando di migliorare le prestazioni del mio sito, non perché funziona male, ma solo come esercizio generale. Il solito suggerimento per i siti asp.net è di rimuovere viewstate ove possibile. Credo che ciò possa essere fatto da ciascun controllo su una pagina separatamente o per l'intera pagina.
La mia domanda è se disabilito il viewstate della pagina questo fermerà il viewstate dei controlli su una pagina master (come ho capito la pagina master è in realtà un controllo sulla pagina).
Soluzione
Sì, la pagina è il creatore del flusso di pagine. Pertanto, la disabilitazione di viewstate per la pagina elimina il rendering viewstate dal processo OnInit. Una domanda migliore sarebbe perché la disabilitazione del viewstate per la pagina principale fa lo stesso?
Altri suggerimenti
C'è un modo semplice per ridurre tutto il tuo stato.
Passaggio 1. Crea una nuova classe simile a questa:
Imports System
Imports System.Web.UI
Public Class SessionPageStateAdapter
Inherits System.Web.UI.Adapters.PageAdapter
Public Overrides Function GetStatePersister() As System.Web.UI.PageStatePersister
Return New SessionPageStatePersister(Page)
End Function
End Class
Passaggio 2. Aggiungi una App_Browsers
cartella al tuo progetto.
Passaggio 3. Nella nuova cartella default.browser
, aggiungi un nuovo <browsers>
file simile al seguente.
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
<=>
Quando esegui le tue pagine ora, dovresti trovare che la dimensione del tuo stato è scesa a pochi byte. La classe SessionPageStateAdapter intercetta viewstate prima di essere servita al browser e lo mantiene sul server nello stato Session. Il bit di viewstate che viene ancora inviato al client è solo un identificatore che viene utilizzato per ricostituire il viewstate originale quando la pagina viene postata nuovamente sul server.
Potresti trovare utile questo articolo:
http://msdn.microsoft.com/en-us/library/ms972976. aspx
Solo una breve nota a lato prima di ottimizzare il sito, hai ottimizzato il server assicurandoti che tutti i file siano compressi con il gzip prima di essere inviati.
In caso contrario, questo ti darà una bella spinta prima ancora di iniziare a armeggiare con la pagina.