Casi todo intento de «hacerlo más rápido» empieza con una corazonada y un plugin. Empiece en cambio con un número, porque parte el problema por la mitad.

El tiempo hasta el primer byte

curl -o /dev/null -s -w 'dns %{time_namelookup}s  connect %{time_connect}s  ttfb %{time_starttransfer}s  total %{time_total}s\n' https://yourdomain.com/
  • TTFB por debajo de 200 ms: el servidor está bien. Todo lo que usted nota está en el navegador: imágenes, fuentes, scripts.
  • TTFB por encima de 800 ms: la página se está construyendo despacio. Nada del navegador arreglará eso.
  • connect mucho mayor que dns: distancia o un saludo TLS lento, no la aplicación.

Si el servidor va lento

La página está haciendo demasiado trabajo por petición. Por orden de cuántas veces es esta la respuesta:

  1. Una consulta sin índice — El registro de consultas lentas la nombra. Un índice suele recortar segundos.
  2. La misma consulta dentro de un bucle — Veinte productos, veinte consultas para sus categorías. Un join las sustituye a todas.
  3. Una llamada externa sin tiempo límite — Una API muerta retiene su página mientras su socket siga abierto.
  4. Sin caché de opcode — Sin opcache, PHP recompila cada archivo en cada petición.

Si el navegador va lento

  • Las imágenes. Normalmente la mayor parte de los bytes. Sirva el tamaño que usa la página, no el que hizo la cámara.
  • Las fuentes. Cada familia y cada grosor es un archivo, y una fuente que bloquea el pintado retiene la página entera.
  • Los scripts de terceros. La parte más lenta de casi cualquier página es código del servidor de otro.
Un plugin de caché sobre una página lenta le esconde el problema a usted, pero no al primer visitante de cada ciclo de caché. Arregle la página y luego cachéela.
Mida la misma página tres veces, a la misma hora del día, antes y después de cada cambio. Un cambio, una medición: si no, no sabrá cuál funcionó.