En este artÃculo te voy a contar varios aspectos acerca del Page Speed Insight que encontré al tratar de resolver este error que no me permitÃa testear la performance de varios de mis sitios.
Error en Page Speed Insight : ERR_CONNECTION_FAILED
Al tratar de probar la performance de varios de mis sitios el Page Speed Insight de Google lanza un error: que no dice mucho más que
Lighthouse returned error: FAILED_DOCUMENT_REQUEST. Lighthouse was unable to reliably load the page you requested. Make sure you are testing the correct URL and that the server is properly responding to all requests. (Details: net::ERR_CONNECTION_FAILED)
Dado que es un servicio que pido al servidor de Google, no esperaba que tenga que ver con mi equipo.
Busqué soluciones en google y encontré muy pocas, muchas de ellas echándome la culpa por mi sitio y ninguna dando realmente en la solución real y te explico por qué
Las razones para el ERR_CONNECTION_FAILED en el Page Speed Insight
Las razones que encontré buscando en google no solucionaron mi problema. Aún no lo solucioné pero encontré un workaround para obtener los resultados. Las únicas tres referencias a este error aparecen en Reddit, Stack Overflow y Foro de Google de Page Speed Insight.
Una menciona que solucionó el problema cambiando de equipo. Esto ya me hizo pensar en algo. Que si ese fuera el caso, el Page Speed Insight no es un servicio que brinda el servidor de Google sino que de alguna forma interviene la máquina propia.
Encontré una aparente confirmación de esto en varios aspectos que luego te contaré.
La segunda causa que encontré buscando en internet fue la existencia de un malware que redirigÃa a algún otro lado. No encontré que este fuera mi caso, revisando las direcciones de red a las que llamaba al acceder a mi sitio sin encontrar nada extraño más allá de google analytics.
La tercer causa es que el sitio era demasiado lento y no respondÃa en un tiempo prudencial, siendo esta la opción más probable en mi caso. Igualmente me pasó que a veces podÃa acceder, y obtener el informe, por ejemplo a las 4.a.m.
El tema de la demasiada tardanza no me pareció razonable tampoco porque el error no era un TIMEOUT sino un ERR_CONNECTION_FAILED.
En este sentido, supuse que el error de google era algo más polite que el de sitios como GTMetrix, donde te dicen que tenes 30 o 50 urls testeandose antes de la tuya. En google no te van a decir: No tenemos un error, sino que cuando el tiempo de procesamiento tardaba mas de lo que ellos quieren invertir en vos, directamente te tiran un error y arreglate.
Pero parece que tampoco ese era «del todo» el problema.
Mis Formas de diagnosticar el ERR_CONNECTION_FAILED en el Page Speed Insight
Para diagnosticar con los datos que tenÃa probé varias alternativas hasta que en la última encontré sin solucionarlo un WorkAround
Probar en otra computadora 1
Probé con otras computadoras en mi casa y siguió lanzando el ERR_CONNECTION_FAILED.
Probar con distintos sitios del mismo servidor
Pensé en el acceso al host. Que el host contestaba las llamadas de forma irregular. Y como el informe consta de varias pasadas, no todas se concretaban exitosamente , y entonces el informe lanzaba el ERR_CONNECTION_FAILED.
Y esto me trajo más incertidumbre. Probé con 8 sitios en el mismo servidor, supuestamente tendrÃa la misma IP. Con 4 sitios lanzó la excepción y con 4 sitios me produjo el informe correctamente. Esto sucedió no solo una vez sino repetidas veces.
Unificar la configuración del .htaccess para todos los sitios
Unifiqué el .htacces. Traté de encontrar diferencias entre un sitio y otro. Y nada. Los que anduvieron bien del principio siguieron andando bien. Los que anduvieron lanzando el error siguieron lanzando el error.
Generar un archivo dummy indexNNN.html
Dado que la mayorÃa de los sitios están hechos con WordPress, quise eliminar a WordPress como la cause. Creé en la raiz un archivo html del tipo indexNNN.html que tenga un simple Hello World en un <p> todo simple, y siguió dando el ERR_CONNECTION_FAILED. Los sitios con error y sin error fueron los mismos.
Consultar a mi servicio de hosting
Este paso fue revelador. Pese a que me parecÃa un error de Page Speed Insight, me atendieron y estuvieron dispuestos a ayudarme. Esto me brindó un dato revelador.
Hice la consulta acerca de un único sitio. Cuando le mencioné la url, hicieron la prueba y el Page Speed Insight les mostró el reporte sin error. Esto me hizo notar , que aún en el mismo horario, accediendo al Page Speed Insight, en una parte del mundo daba con error, y en otra parte del mundo, en otro paÃs no daba error.
Llamé a mi padre, que vive en el mismo paÃs que yo. (Si lamentablemente aún no me pude mudar y no se si ya es demasiado tarde, están comenzando con la expropiación de la primera empresa… pero eso es otro tema).
Con respecto al error, llamé a mi padre y a él también le daba el error. Entonces asumà que desde nuestra región el Page Speed Insight lanzaba el ERR_CONNECTION_FAILED.
Page Speed Insight y la máquina local
Estos intentos de resolución y sus resultados me hicieron fortalecer la idea de que Page Speed Insight está utilizando mi máquina para generar el reporte.
Intenté comprobarlo corriendo revisando en el inspect del chrome cuando enviaba la url en el form del Page Speed Insight. Y noté que el error estaba siendo generado por 4 llamadas . 2 de las cuales eran el submit del form . La url que muestra tiene que ver con runPageSpeed y uno de los parámetros es la strategy que para un caso es mobile y para el otro caso desktop.
Y noto que el initiator es lightsight.js.
Extensión de chrome lighthouse.
En algunas opciones de solución se habÃa mencionado usar la extensión lighthouse de chrome. Realmente esta extensión genera el mismo informe. Y en mi caso me pasaba que donde me daba error el form del Page Speed Insight también me daba error la extensión lighthouse.
El lighthouse tiene una ventaja. Que no solo muestra el informe de un sitio enviado en el momento, con su url. Sino que el reporte en realidad es un json. Y si guardamos el json de la respuesta y después lo cargamos en el lighthouse podemos ver el informe detallado con todos sus graficos, sus colores, y las recomendaciones.
Pero el lighthouse no parecÃa ser la solución hasta ese momento
El Workaround que encontré
Sigo pensando que como muchos otros problemillas , la solución es mudarme del paÃs en el que por ahora sigo viviendo (aún con fronteras cerradas). Pero encontré una solución intermedia.
Noté que el informe consta de varias secciones (como 7 u 8) además de todo eso duplicado, una para mobile y otra para desktop.
También noté (sin que nadie me dijera) que al instalar la extensión de Chrome ligthhouse, se me añadió una pestaña en el modo para desarrolladores, que casualmente se llama «lighthouse».
Desde esa pestaña se puede pedir el informe, tal como en el Page Speed Insight o haciendo click en el icono de lighthouse mientras se está en la página. Pero con una caracterÃstica adicional.
En la pestaña interna de la extensión chrome lighthouse en la ventana para desarrolladores , tiene varios checkboxes que permiten seleccionar cada una de las secciones del informe asi como seleccionar solo mobile o solo desktop (o ambos).
Asi que decidi obtener mi informe parcial y muchas de las secciones tanto para mobile como para desktop dieron el informe con resultado detallado.