2009-08-25 5 views

Répondre

7

Boucle dans la vue partielle si vous le pouvez. Chaque fois que vous appelez RenderPartial, les choses suivantes se produire (avec la permission des fichiers source MVC):

  1. RenderPartial appels RenderPartialInternal

  2. RenderPartialInternal crée une nouvelle ViewDataDictionary et une nouvelle ViewContext

  3. RenderPartialInternal appels FindPartialView pour localiser et instancier une vue

  4. FindPartialView recherche tous les moteurs de vue enregistrés (normalement un seul) pour la vue, en utilisant le contexte du contrôleur et le nom de la vue en tant que clés. Chaque moteur de vue recherche la vue dans tous les chemins qu'elle prend en charge, par ex. Vues/controller/view.aspx, Vues/controllers/view.ascx, Views/Shared/view.aspx, etc. Les vues peuvent être renvoyées à partir d'un cache mémoire pour accélérer cette étape

  5. La méthode Render de la vue est appelée. J'ai perdu la trace du fonctionnement interne de la méthode Render de la norme WebFormView à 13 niveaux dans la pile. Render construit un grand nombre d'objets de contexte dont la vue interne a besoin, vérifie les autorisations pour exécuter la vue, connecte les événements pour les contrôles serveur, réinspecte l'objet Request pour décider de ce qu'il doit faire de plus, etc. Après avoir rendu la vue, il déroule le contexte qu'il a créé.

Dans l'ensemble, rien de tout cela n'est trop mauvais. Tout se passe à l'intérieur de la CPU et de la RAM de la machine, ce qui est plus que ce qui peut être dit pour l'accès à la base de données typique qui se passe dans le contrôleur. Le processus doit sortir sur le disque seulement la première fois que la vue est chargée (cela peut être lent, cependant, les fichiers doivent être recherchés et la vue doit être compilée). ASP.NET MVC a dû optimiser le processus de rendu de vue pour maintenir un haut niveau de performance.

Néanmoins, c'est un peu long, et si vous pouvez éviter de l'exécuter plusieurs fois dans une requête, cela aidera à améliorer les temps de réponse de la méthode d'action.

0

Une chose qui permettra d'améliorer les performances de vos vues par plusieurs fois est de mettre l'Debug=false dans votre web.config (c.-à déployer en mode de sortie)

Dans ce cas, le moteur MVC en cache toutes les vues (y compris partials) et ne tentera pas de résoudre leur emplacement et de les charger sur chaque tentative de les utiliser.

Questions connexes