ASP.NET: Compress ViewState
Quels sont les plus récents et les plus grands moyens pour comprimer le ASP.NET l'état d'affichage de contenu?
Que dire de la performance de cette? Est-il utile de conserver les pages rapidement et de minimiser les données de trafic?
Comment puis-je faire:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKMTM4Mjc3NDEyOWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgkFLGN0b
DAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQxBSxjdGwwMCRDb250ZW50UGxhY2VIb
2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MQUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX01haW5Db250ZW50J
FJhZEJ1dDIFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCdXQyBSxjdGwwMCRDb
250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0MwUsY3RsMDAkQ29udGVudFBsYWNlSG9sZGVyX
01haW5Db250ZW50JFJhZEJ1dDQFLGN0bDAwJENvbnRlbnRQbGFjZUhvbGRlcl9NYWluQ29udGVudCRSYWRCd
XQ0BSxjdGwwMCRDb250ZW50UGxhY2VIb2xkZXJfTWFpbkNvbnRlbnQkUmFkQnV0NQUsY3RsMDAkQ29udGVud
FBsYWNlSG9sZGVyX01haW5Db250ZW50JFJhZEJ1dDXz21BS0eJ7991pzjjj4VXbs2fGBw==" />
En sometning comme ceci:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUKMTM4Mjc3N==" />
source d'informationauteur Seb Nilsson | 2010-03-04
Vous devez vous connecter pour publier un commentaire.
La réponse simple pourrait ne pas être ce que vous voulez entendre. Trop souvent, les contrôles sur la page ont l'état d'affichage par défaut lorsqu'ils n'ont pas vraiment besoin. C'est une bonne idée d'éteindre l'état d'affichage jusqu'à ce que vous savez que vous allez avoir besoin d'elle et de l'allumer pour (je l'espère) quelques cas où vous voulez vraiment conserver l'état d'affichage.
Je me rends compte que c'est un vieux thread, mais nous avons été à l'aide de Telerik est RadCompression HttpModule pour un certain temps maintenant et il fonctionne très bien à la compression de ViewState, AJAX et Web Services les réponses. Vous pouvez aussi tricher et d'enregistrer l'état d'affichage en session - bonne à faible trafic des sites.
http://www.telerik.com/help/aspnet-ajax/radcompression.html
Seb, ViewState est déjà compressé... qu'est ce que vous voyez... une version compressée de vos contrôles. Si vous voulez moins de frais généraux, puis ne pas utiliser viewstate 🙂
Viewstate utilisation devrait être maintenu à un minimum!
C'est un XML-lized visualisation de votre posté viewstate:
Fondamentalement juste quelques composants radiobutton qui aiment savoir de leur existence. (les navigateurs ne pas envoyer un
<input type="radio">
champ avec le postdata si elle n'est pas cochée). C'est assez minime déjà.Peut vraisemblablement être compressé en se connectant à la charger/enregistrer des méthodes ou des modules HTTP, mais ce n'est pas vraiment pratique ni vraiment nécessaire.
Dans le cas où le viewstate est beaucoup plus grand dans votre application réelle, éviter de mettre des objets dans le viewstate. Ceci peut être réalisé par l'initialisation des contrôles dans le
OnInit()
ouPage_Init()
méthodes à la place de la valeur par défautPage_Load()
.Le raisonnement derrière cela peut être trouvé à
http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/Truly-Understanding-Viewstate.aspx
et http://msdn.microsoft.com/en-us/library/ms972976.aspx
Un rapide résumé:
OnInit()
leTrackViewState()
méthode est appelée.Page_Load()
) ou un gestionnaire d'événements, sera suivi et remis au client. De cette façon, ces contrôles peuvent rétablir leur état lors de la prochaine demande.OnInit()
en cas de besoin. (par exemple, repeupler les options d'unDropDownList
à partir de la base de données).Une exception:
Si un contrôle est dynamiquement ajoutés à l'arborescence de contrôle, il joue un rattrapage. Leur
OnInit()
méthode peut s'exécuter à un moment plus tard, la cause de ces propriétés à la fin dans le viewstate, après tout. Si l'initialisation de la commande ne peut pas se produire dansOnInit()
réglageEnableViewState="false"
peut être utilisé comme solution de contournement.À chaque fois que mon viewstate augmente de manière inattendue, je suis en utilisant le "ViewState Décodeur 2.2" app pour trouver ce qui a fini dans le viewstate. Souvent, il n'est pas nécessaire pour que les données soient là.
Et un dernier mot:
L'état d'affichage n'est pas utilisé pour repeupler les formes!!
Ces valeurs sont déjà soumis à la postdata.
De nouveau, après quelques recherches dans ce que j'ai résumé mes conclusions dans un blog post sur La Compression De L'État D'Affichage.
Pour enregistrer un comprimé de Vue de l'État, c'est ce que j'ai fait:
Et pour le chargement de la partie, ce code fait le travail pour moi:
La meilleure façon de réduire l'état d'affichage est juste pour ne pas l'utiliser. Il va vous amener à faire un travail supplémentaire de programmation (repeuplement de contrôle des valeurs, etc sur le post de retour, mais il vous fera économiser sur la quantité d'informations que vous envoyez sur le navigateur). Vous ne pouvez pas la modifier.
Voici un lien vers le point de vue de l'état sur MSDN:
http://msdn.microsoft.com/en-us/library/ms972976.aspx
Voici un lien qui décrit certaines des meilleures pratiques:
http://mnairooz.blogspot.com/2007/01/aspnet-20-viewstate-and-good-practices.html
Et Un sur la désactivation de l'état d'affichage:
http://www.codeproject.com/KB/aspnet/ASPNET_Best_Practices.aspx
Compression de vue de l'état échoue dans certains cas:
- Si vous utilisez le panneau de mise à jour sur la page, ne pas utiliser de mode de compression.
- Si vous modifiez l'état d'affichage dans la suite de ICallBack code n'utilisez pas de mode de compression, car cela ne reflète pas le bon état d'affichage sur le post de retour.