¿Qué está causando el tiempo de 'espera' antes de que se cargue mi HTML?

11

Tengo un sitio web que parece cargar muy lentamente. Cuando ejecuto una prueba de velocidad, veo que parece haber un espacio de 6 segundos antes de que se cargue el HTML. Las imágenes y los scripts JS se cargan muy rápido después de ese punto.

Puede ver en la imagen debajo de las barras amarillas de "tiempo de espera":

La carga del archivo HTML tomó más de 5 segundos, mientras que la mayoría de los otros activos se cargan en menos de 1 segundo

Esto parece ser constante sin importar el contenido HTML en la página.

Este sitio está utilizando un CMS (ModX Revo), por lo que el HTML se almacena en una base de datos SQL y es generado por PHP, pero nunca antes había experimentado este problema.

¿Alguien sabe qué está causando esto y cómo podría acelerarlo?

MeltingDog
fuente
¿Es esto algo nuevo? Es decir, ¿han funcionado estas páginas normalmente antes y ahora funcionan mal? ¿O es esta una instalación / sitio más nuevo? ¿Puedes contarnos más?
closetnoc
1
A menos que exista alguna red intermediaria que lo esté deteniendo, ¿este parece ser el tiempo que tarda su servidor en generar la respuesta? ¿Dices "sin importar el contenido HTML" - contenido HTML a través de tu CMS, o literalmente una página HTML estática? Ciertamente probaría una simple página HTML estática "Hello World" si aún no lo ha hecho. También tenga en cuenta que los servidores de pingdom están en el otro lado del mundo a Australia (que supongo que es donde está alojado).
MrWhite
1
En mi opinión, el problema es principalmente con esa página: su servidor / CMS parece estar tardando mucho en generar la respuesta. Consulta SQL ineficiente? Otras páginas en su sitio parecen ser relativamente rápidas. (?)
MrWhite

Respuestas:

13

El término técnico para esperar se denomina tiempo para el primer byte y determina la capacidad de respuesta de un servidor web u otros recursos de red.

Algunas razones comunes por las que puede ver un momento elevado para el primer byte:

  • Red sobrecargada (normalmente alojamiento compartido)
  • Servidores de configuración incorrecta
  • Distancia de usted y el servidor (la ubicación geográfica juega un papel menor)
  • Errores del servidor (saltos)

En general, este problema se ve a menudo en el alojamiento compartido debido a la gran cantidad de sitios web y las personas que los visitan, lo que, por supuesto, aumenta el tiempo de byte de la red. Otra posible causa es un error en la red en algún lugar, como un salto o porque su servidor no está dentro de la ubicación de su público objetivo, por ejemplo, un servidor BRITÁNICO 'BUENO' tendrá un tiempo de byte menor que un servidor de EE. UU. Dirigido a usuarios en el Reino Unido, debido a la distancia que los datos deben enviarse y recibirse (normalmente un aumento de alrededor de 100-200 ms).

Tal vez un momento para conseguir un nuevo anfitrión

En el pasado, tengo que pasar de un servidor a otro debido al retraso del primer byte, es posible que tenga que elegir un nuevo servidor web o actualizar su paquete actual.

Pruebas confiables

Probar la velocidad de su sitio web desde la banda ancha de su hogar es muy parcial porque puede ser un problema con su banda ancha que no responde al sitio web. Debe probar su sitio web utilizando múltiples conexiones desde múltiples servidores ... Recomiendo probar la página web y ejecutar múltiples pruebas a la vez desde diferentes ubicaciones y muchas en la audiencia geográfica objetivo. Esto le dará una mejor visión general de lo que está sucediendo, si es su primer byte, le recomiendo que se ponga en contacto con su proveedor de alojamiento web antes que nada.

Hacer ping y rastrear la ruta del servidor

Si intenta ejecutar un ping en el servidor, los resultados pueden mostrarse o no, ping utiliza ICMP en lugar de UDP o TCP, lo que significa que no es como consultar el servidor en el puerto 80 en el que se ejecutará su httpd. Puede usar la ruta de rastreo para identificar cualquier servidor en la ruta que podría estar causando que el primer byte aumente, nuevamente ... no consulta el servidor httpd en el puerto 80 y si traceroute con Windows usará ICMP y Mac / Linux Las máquinas utilizarán UDP. Vale la pena probarlo porque es algo muy rápido y fácil de hacer, pero si los resultados vuelven bien, no necesariamente significa que no haya un problema en alguna parte.

Simon Hayter
fuente
Hola @SunWKim. He actualizado mi respuesta con lo que preguntaste. Mira el fondo de mi respuesta.
Simon Hayter
Estoy de acuerdo con sus razones comunes de tiempo para el primer byte. En este caso, sin embargo; Creo que tiene más que ver con el código JavaScript.
Dom
El primer byte puede ser causado por una amplia gama de cosas, pero JavaScript no es uno de ellos, ya que la respuesta del encabezado es anterior a elementos en línea como JavaScript, CSS, imágenes, etc. No confunda el primer byte con elementos y archivos reales ..
Simon Hayter
No estoy confundiendo a los dos. Quizás si visitó mbff.com.au y lo vio por sí mismo, puede estar convencido de que no es cuestión de tiempo para el primer byte. El retraso se produce después de la primera respuesta del encabezado.
Dom
1
The delay is occurring after the first header responseentonces ese no es el primer byte. El primer byte es la primera respuesta.
Simon Hayter
4

1) Tiene Adobe TypeKit que no se carga de forma asincrónica con el código actual. Intente reemplazarlo con el código asincrónico avanzado: http://help.typekit.com/customer/portal/articles/649336-embed-code

Este código de inserción estándar aprovecha el hecho de que las etiquetas bloquean el procesamiento posterior de la página para ayudar a prevenir el FOUT [Flash of Unstyled Text]. Mientras se carga la secuencia de comandos de Typekit, se bloquea la representación de la página, por lo que el texto no comenzará a representarse con fuentes alternativas.

2) Prueba con el nuevo TypeKit. ¿Cómo es el tiempo de carga ahora? ¿Mejor? Ve al paso 3.

3) Reemplace su Google Analytics con un JavaScript actualizado que proporcione la sintaxis asincrónica más reciente: https://developers.google.com/analytics/devguides/collection/gajs/

4) Prueba. ¿La página se está cargando mejor aún?

5) Finalmente, considere optimizar imágenes como pattern.jpg. Lo convertí a PNG y pude reducir el tamaño del archivo de 199kB a 56kB. Esto reduce el tiempo de recepción del archivo: https://www.dropbox.com/s/i06jx509bmprhhh/pattern.png?dl=0

Espero que esto ayude.

Dom
fuente
3

Elementos PHP frente a elementos no PHP

Si compara los tiempos de carga de activos que no son PHP con los tiempos de carga basados ​​en PHP, verá que el servidor responde rápidamente si PHP no está involucrado.

Esto generalmente indica problemas internos en su script PHP.

El problema podría estar dentro de la capa PHP o la base de datos. El uso de herramientas de depuración avanzadas como XDebug o NewRelic puede ayudarlo a detectar rápidamente el cuello de botella.

Los problemas de tiempo hasta el primer byte pueden ser causados ​​por restricciones de hardware, configuración deficiente o código ineficiente. En el alojamiento compartido, es muy probable que haya restricciones de hardware y una configuración deficiente.

En cualquier caso, resolver el problema generalmente significa uno o todos:

  • Más hardware
  • Mejor programación
  • Agregar almacenamiento en caché

El hardware más rápido es una solución obvia pero a menudo costosa si ya tiene recursos dedicados.

Una mejor programación puede no ser posible si el problema es interno al código que no mantiene o carece de recursos para desarrolladores.

El almacenamiento en caché ayuda a reducir la cantidad de solicitudes que deben afectar a los recursos subyacentes y de bajo rendimiento.

Pruebas

Cuando utilice herramientas de prueba, asegúrese de realizar varias ejecuciones. Los picos de red y servidores temporales pueden llevarlo fácilmente por el camino equivocado, por lo que debe intentar promediarlos.

Hospedaje

Si tiene una cuenta de alojamiento compartido, considere pasar a la nube o servicios de tipo VPS para tener una mejor idea de los problemas de rendimiento. A menos que utilice una técnica de almacenamiento en caché (CDN o servicio de tipo Cloudflare), corregir los problemas de rendimiento en los sistemas de alojamiento compartido masivo puede ser muy desafiante ya que carece de un control suficiente del servidor.

jeffatrackaid
fuente
-1

Intente configurar las cookies de terceros como solo visitadas.

Tom
fuente