Hola usuario de nuestro sitio web, encontramos la solución a lo que andabas buscando, desplázate y la obtendrás más abajo.
Solución:
Si solo desea registrar cuánto tiempo lleva obtener la fuente de la página básica, puede envolver un HttpWebRequest alrededor de un cronómetro. P.ej
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
System.Diagnostics.Stopwatch timer = new Stopwatch();
timer.Start();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
timer.Stop();
TimeSpan timeTaken = timer.Elapsed;
Sin embargo, esto no tendrá en cuenta el tiempo para descargar contenido adicional, como imágenes.
[edit] Como alternativa a esto, puede usar el control WebBrowser y medir el tiempo entre la ejecución de .Navigate() y el evento DocumentCompleted desde que se activa. Creo que esto también incluirá el tiempo de descarga y renderizado de contenido adicional. Sin embargo, no he usado mucho el control WebBrowser y solo no sé si tiene que borrar un caché si solicita repetidamente la misma página.
Dependiendo de la frecuencia con la que necesite hacerlo, tal vez pueda intentar usar Selenium (una herramienta de prueba automatizada para aplicaciones web), ya que utiliza internamente un navegador web, tendrá una medida bastante cercana. Creo que no sería demasiado difícil usar la API de Selenium desde una aplicación .Net (ya que incluso puedes usar Selenium en pruebas unitarias).
Medir este tipo de cosas es complicado porque los navegadores web tienen algunas particularidades cuando descargan todos los elementos de las páginas web (JS, CSS, imágenes, iframes, etc.) – este tipo de particularidades se explican en este excelente libro (http://www.amazon.com/High-Performance-Web-Sites-Essential/dp/0596529309/).
Una solución casera probablemente sería demasiado compleja de codificar o no atendería algunas de esas particularidades (medir la el tiempo dedicado a descargar el html no es suficiente).
Una cosa que debe tener en cuenta es el caché. Asegúrate de medir el tiempo de descarga desde el servidor y no desde el caché. Deberá asegurarse de haber desactivado el almacenamiento en caché del lado del cliente.
También tenga en cuenta el almacenamiento en caché del lado del servidor. Supongamos que descarga el ritmo a las 9:00 a. m. y demora 15 segundos, luego lo descarga a las 9:05 y demora 3 segundos, y finalmente a las 10:00 nuevamente demora 15 segundos.
Lo que podría estar sucediendo es que a las 9 el servidor tuvo que renderizar completamente la página ya que no había nada en el caché. A las 9:05, la página estaba en el caché, por lo que no necesitaba renderizarla nuevamente. Finalmente, a las 10, el caché se había borrado, por lo que el servidor tenía que volver a procesar la página.
Le recomiendo que consulte el complemento YSlow para FireFox, que le brindará un análisis detallado de los tiempos necesarios para descargar cada uno de los elementos de la página.
Te mostramos comentarios y valoraciones
Si te gustó nuestro trabajo, puedes dejar un artículo acerca de qué le añadirías a este artículo.