ASP.NET Masterpages et viewstate
-
03-07-2019 - |
Question
Je cherche à améliorer les performances de mon site, non pas à cause de mauvaises performances, mais bien à titre d'exercice général. La suggestion habituelle pour les sites asp.net est de supprimer viewstate dans la mesure du possible. Je crois que cela peut être fait par chaque contrôle sur une page séparément ou pour la page entière.
Ma question est la suivante: si je désactive l'état d'affichage de la page, cela arrêtera l'état d'affichage des contrôles sur une page maître (si je comprends bien, la page maître est en réalité un contrôle de la page).
La solution
Oui, la page est à l'origine du flux de page. Ainsi, la désactivation de viewstate pour la page supprime le rendu viewstate du processus OnInit. Une meilleure question serait de savoir pourquoi la désactivation du viewstate pour la page maître a le même effet.
Autres conseils
Il existe un moyen simple de réduire l’ensemble de vos points de vue.
Étape 1. Créez une nouvelle classe qui ressemble à ceci:
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
Étape 2. Ajoutez un App_Browsers
dossier à votre projet.
Étape 3. Dans votre nouveau dossier default.browser
, ajoutez un nouveau fichier <browsers>
ressemblant à ceci.
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="[YourNamespaceGoesHere].SessionPageStateAdapter" />
</controlAdapters>
</browser>
</browsers>
<=>
Lorsque vous exécutez vos pages maintenant, vous devriez constater que la taille de l'état d'affichage a été réduite à quelques octets. La classe SessionPageStateAdapter intercepte le viewstate avant qu'il ne soit servi au navigateur et le conserve sur le serveur en état de session. Le bit d'état d'affichage qui est toujours envoyé au client est simplement un identificateur utilisé pour reconstituer l'état d'affichage lorsque la page est renvoyée sur le serveur.
Cet article pourrait vous être utile:
http://msdn.microsoft.com/en-us/library/ms972976. aspx
Juste une petite note sur le côté avant d'optimiser le site, optimisez le serveur en vous assurant que tous les fichiers sont compressés avant de les envoyer.
Sinon, cela vous donnera un bon coup de pouce avant même de commencer à bricoler la page.