Perfilado (Profiling)
Visión general
La velocidad es importante para cualquier sitio web: un sitio lento afecta la experiencia de usuario y el SEO. Por eso conviene medir el rendimiento. Crono incluye una herramienta para medir el tiempo desde la solicitud inicial hasta el primer byte enviado al navegador (Time To First Byte, TTFB): MiniProfiler.
MiniProfiler
MiniProfiler es una biblioteca y una interfaz para perfilar la aplicación. Muestra en qué se invierte el tiempo, qué consultas se ejecutan y cualquier medición personalizada que agregues, lo que ayuda a depurar y optimizar. Por defecto, muestra un widget en una esquina de cada página para tener el rendimiento siempre presente.
Activar MiniProfiler
MiniProfiler forma parte del módulo Herramientas de Desarrollo (Crono.HerramientasDesarrollo), que lo expone mediante MiniPerfiladorViewComponent. Se activa desde la configuración del módulo (PerfiladorConfiguraciones), que permite, entre otras cosas:
MiniPerfiladorEnPaginaPublicaHabilitado: habilitar el perfilador en el sitio público.MiniPerfiladorRutasIgnoradas: rutas excluidas del perfilado (por ejemplo/admin/,/temas/,/agrupacion/).MostrarZonasMicroAplicacionyMostrarNombreMaquina: ayudas de diagnóstico adicionales.
Solo los usuarios con rol de administrador ven el widget del perfilador. Para perfilar páginas del backend, quita la entrada /admin/ de las rutas ignoradas y guarda la configuración (ver Configuración).
Mediciones personalizadas
El widget muestra tiempos de acciones de controlador, filtros, resolución y renderizado de vistas, componentes de vista y consultas a base de datos. Para medir un bloque de código propio, usa el servicio ICronometro (Crono.Diagnosticos):
using (_cronometro.Paso("Código costoso"))
{
// ... ejecutar código costoso ...
}
El método de paso sigue el patrón disposable (using): al salir del bloque, la medición se detiene automáticamente y se muestra en el widget con el mensaje indicado. Cuando el módulo de Herramientas de Desarrollo no está instalado o el perfilador está inactivo, una implementación nula (CronometroAutomatico / cronómetro nulo) toma el relevo sin coste.