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:
- Una consulta sin índice — El registro de consultas lentas la nombra. Un índice suele recortar segundos.
- La misma consulta dentro de un bucle — Veinte productos, veinte consultas para sus categorías. Un join las sustituye a todas.
- Una llamada externa sin tiempo límite — Una API muerta retiene su página mientras su socket siga abierto.
- 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ó.