2009-03-08 8 views
2

Avec les contrôles utilisateur sur une page, je comprends que chaque contrôle a un impact sur l'utilisation de la mémoire en stockant leur propre état dans ViewState. Ma question est, combien? Par exemple - J'ai un formulaire de feedback en tant que contrôle sur ma masterpage. Il est défini sur Visible = "false" par défaut. Un utilisateur clique sur un bouton de retour, et le contrôle devient visible quand il le faut.Impact sur les performances à l'aide des contrôles ASP.NET

Quel serait l'impact sur les performances relatives en ayant le contrôle assis sur everypage (comme il se trouve dans la page maître), mais pas visible? Le site que je suis en train de développer aura potentiellement beaucoup de trafic et je me demande si je me prépare à un mal de tête plus tard si les choses se compliquent.

Merci

Répondre

2

Performance pourraient être affectées sur le serveur et le client. Principalement, vous voulez réduire la quantité de HTML, y compris viewstate qui est envoyé au client. Si cela se trouve sur chaque page, vous allez envoyer cette information viewstate plus souvent que nécessaire.

Je pense que vous devriez avoir une logique qui assure que le contrôle de formulaire de rétroaction est seulement ajouté à la page de commentaires. Plutôt que d'utiliser visible = "false", placez-le sur sa propre page et créez un lien vers celui-ci, ou ajoutez dynamiquement le contrôle à la page.

Les principaux avantages seront une utilisation réduite de la bande passante et un rendu plus rapide de la page sur le client. Les avantages secondaires incluent un débogage plus facile et un rendu de code plus propre au client.

Avec tous les problèmes de performances, vous devriez tester les performances et porter des jugements basés sur des données concrètes. Dans ce cas, calculez la taille de viewstate sur le client, puis multipliez par le nombre de requêtes pour voir la taille de l'utilisation de la bande passante sur le serveur. Sur le client, utilisez un outil comme FireBug pour comprendre la taille globale de la page reçue par le client.

0

Cela dépend du contrôle. Datagrid avec des centaines de lignes peut générer 100k de viewstate. De l'autre côté, la case à cocher ne générera pas trop.

Vous pouvez simplement déposer votre contrôle formulaire de commentaires sur la page aspx vide, visitez-le dans le navigateur et vérifiez le champ caché __viewstate. C'est combien de formulaire de commentaires ajoutera à chaque page en termes de viewstate. Ensuite, vous devrez décider si cela est acceptable.

Je ne penserais pas à de telles optimisations dès le départ. Si cela devient lent plus tard, vous pouvez toujours changer le formulaire pour qu'il soit pur html et utiliser ajax ou quelque chose pour publier les données sur le serveur. Tant que c'est le contrôle de l'utilisateur et ne pas copier le contenu collé, il sera facile d'optimiser

Questions connexes