Ocasionalmente compruebo el rendimiento de una aplicación ASP.NET MVC que estamos construyendo. Iba a insertar una vista parcial en un bucle, y solo por curiosidad, verifiqué cuánto tiempo me llevó renderizar la página. El resultado no fue bueno.ASP.NET MVC vistas parciales lento?
Necesito hacer una investigación más concluyente, pero por si había alguien con problemas similares o más información, esto es lo que tengo hasta ahora. En primer lugar, debería decir que todos los resultados y mediciones se realizaron después de varias cargas de página y que configuré <compilation debug="false">
en mi web.config.
- Parece que un solo render parcial tiene unos 5 ms de acierto (al menos en mi entorno). Cuando en línea el contenido real de la vista parcial, obtengo prácticamente 0ms.
- Cuando incluyo una vista parcial vacía en un bucle de unos 70 elementos, el tiempo total de renderización aumenta en ~ 60ms. Entonces, hay algo de almacenamiento en caché, presumiblemente, pero no es ideal.
- Depugé ASP.NET MVC, y descubrí que las vistas parciales se almacenan en caché, pero solo almacena en caché las rutas a las ascx. Las vistas reales se instancian cada vez usando el método BuildManager.CreateInstanceFromVirtualPath.
- Y ahora el bit interesante: cuando se incluye la misma vista parcial usando la sintaxis de WebForms (
<my:UserContol runat="server" />
), los 60 ms adicionales desaparecen.
De acuerdo con las observaciones anteriores, parece que el culpable es el método BuildManager.CreateInstanceFromVirtualPath. Tal vez, no estaba destinado a ser llamado varias veces. Es probable que las formas web no lo usen; o usarlo de alguna manera solo una vez por cada ascx?
Entonces, su pregunta es; son vistas parciales más lentas que el contenido inline, del que ya tiene la respuesta. :) – bzlm
La pregunta era si es posible obtener el mismo rendimiento que en Webforms. –
60ms no es lento para mí. – jfar