ASP.NET come hai indicato usa il ViewState. Prima di tutto spiegherò brevemente lo scopo del ViewState e il motivo per cui è lì.
Che cos'è il ViewState
In breve, lo scopo di ViewState è di preservare il valore dei campi del modulo tra i postback. Da quella dichiarazione, puoi dedurre che più campi hai, più grande sarà il tuo ViewState.
Oltre a preservare il valore dei campi modulo tra i postback, puoi anche archiviare dati arbitrari all'interno di ViewState, utilizzando ViewState[key] = value
.
Tuttavia, è possibile disabilitare ViewState, a livello di pagina o livello di elemento in cui non è appropriato utilizzarlo. Questo può anche risparmiare spazio nel ViewState.
Come
Il ViewState è memorizzato come elemento del modulo nascosto che viene pubblicato sul server quando si invia la pagina. Il seguente diagramma mostra i punti chiave nell'elaborazione di ViewState:
asp.net viewstate http://i.msdn.microsoft.com/dynimg/IC152667.gif
I punti chiave qui sono LoadViewState
e SaveViewState
. LoadViewState
carica i dati inviati al server, dove SaveViewState
lo serializza per la memorizzazione nel ViewState dopo che gli eventi della pagina sono stati elaborati.
vantaggi
Il vantaggio principale dell'utilizzo di ViewState è la persistenza dei dati tra i carichi di pagina. Ad esempio, quando la pagina viene caricata per la prima volta, i campi possono essere compilati con i risultati, ad esempio, di una query di database con esecuzione prolungata. Carichi successivi possono utilizzare i valori nel ViewState per salvare la riesecuzione di tale query.
Relazione con ASP.NET MVC
ViewState non è affatto pertinente per ASP.NET MVC ed è un componente di Web Form di ASP.NET.
Equivalente in PHP?
Non esiste un equivalente in PHP. Potresti implementare manualmente la funzionalità se lo desideri, serializzando ad esempio il tuo modello e ricaricandolo su POST.
Devi usare ViewState
No, non lo fai. Se la disattivi, la dimensione dell'output della pagina diminuirà, ma dovrai anche tenere conto del sovraccarico dovuto al ricaricamento dei dati.
TL; DR e alla domanda
La differenza tra la dimensione delle pagine PHP e l'HTML generato delle pagine ASP.NET sarà drammatica? . La risposta è dipende da ciò che stai emettendo. Se stai realizzando moduli di grandi dimensioni e in particolare se stai facendo uso di controlli come Asp: DataTable allora sì, il tuo output potrebbe essere notevolmente più grande. Ho visto ViewState crescere oltre 1mb. È necessario tenere a mente che su ogni invio, l'intero ViewState deve essere caricato sul server web. Se stai producendo moduli piccoli e semplici, la differenza di dimensioni sarà trascurabile. YMMV a seconda di cosa si sta facendo esattamente.
L'altra cosa da tenere a mente è che in PHP hai molto più controllo sul markup generato rispetto a quello che fai con WebForms.