Enregistrer la viewstate sur le serveur
Depuis sa version 1.0 ASP.net a introduit la notion de Viewstate qui permet de maintenir l'état des contrôles entre 2 requêtes. Je ne vais pas vous réexpliquer le rôle ni le fonctionnement du viewstate Fabrice l'a déjà fait sur ASP-PHP : Le ViewState en ASP.NET et Scott Mitchell l'explique de façon très complète sur MSDN : Understanding ASP.NET View State, Fritz Onion a lui aussi écrit un article sur l'amélioration des performances du Viewstate avec ASP.net 2.0 : Speed Up Your Site with the Improved View State in ASP.NET 2.0.
Mais saviez vous qu'on peut modifier où est stocké le Viewstate ? Par défaut il est stocké sur le client dans un champ caché (<input type="hidden" name="__VIEWSTATE" ... />), mais on peut très bien le stocker sur le serveur en surchargeant les méthodes LoadPageStateFromPersistenceMedium et SavePageStateToPersistenceMedium
J'ai justement écrit une source sur aspfr à ce sujet : stocker le viewstate sur le serveur plutôt que sur le client
Voici le principe :
public class ServerViewStatePage : Page
{
protected override void SavePageStateToPersistenceMedium(object state)
{
// Génération d'un identifiant unique et aléatoire pour des raisons de sécurité
// Enregistrement de cet enregistrement dans un champ caché coté client
// Enregistrement de l'objet state sur le server avec notre identifiant unique
}
protected override object LoadPageStateFromPersistenceMedium()
{
// Récupération de l'identifiant unique se trouvant dans Request.Forms
// Récuperation et renvoie de l'objet state stocké sur le server à partir de l'identifiant
}
}