2010-08-10 8 views
6

ViewState CachingCaching viewstate?

Ceci est une excellente idée, mais elle est implémentée pour SharePoint. Je me demande s'il existe une solution pour les pages régulières asp.net, qui fait de même, met en cache les viewstates.

+0

C'est assez compliqué. Que feriez-vous si votre serveur est très occupé (il y a donc beaucoup d'utilisateurs dont l'état d'affichage de la page est en cache) et que le cache de votre état d'affichage expire avant de renvoyer votre formulaire? –

+0

@Robert utilise simplement un cache ou un support de persistance qui n'expire pas. –

Répondre

8

C'est en fait assez simple! Vous avez juste besoin de passer outre ces deux méthodes sur votre page:

SavePageStateToPersistentMedium() 

LoadPageStateFromPersistenceMedium() 

là, vous pouvez obtenir l'arborescence d'objets ViewState, sérialisation comme vous le voulez et stocker où vous voulez (session, SQL, etc.), et Au lieu de renvoyer l'intégralité du blob sérialisé au navigateur, renvoyez simplement un identifiant unique que vous pourrez utiliser pour le retrouver la prochaine fois.

L'idée est couvert en détail minutieux ici: http://msdn.microsoft.com/en-us/library/ms972976.aspx

0

Il est tout à fait possible grâce à la substitution de la ci-dessous deux méthodes

asp.net System.Web.UI.Page: 

SavePageStateToPersistentMedium() 

LoadPageStateFromPersistenceMedium() 

Alors que dans la première méthode, vous devez vérifier si le ViewState existe déjà dans le cache et sinon l'enregistrer là, dans la deuxième méthode, vous pouvez le récupérer s'il est déjà là.

Vous pouvez concaténer le SessionID et le nompage comme clé pour le cache viewStateKey.