Skip to main content

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/).
  • MostrarZonasMicroAplicacion y MostrarNombreMaquina: 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.