Quasi ogni tentativo di "renderlo più veloce" parte da un'intuizione e da un plugin. Parta invece da un numero, perché taglia il problema a metà.

Il tempo al primo 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 sotto i 200 ms - il server sta bene. Tutto ciò che lei percepisce sta nel browser: immagini, font, script.
  • TTFB oltre gli 800 ms - la pagina viene costruita lentamente. Nulla nel browser rimedierà a questo.
  • connect molto più grande di dns - distanza o un handshake TLS lento, non l'applicazione.

Se è lento il server

La pagina fa troppo lavoro per ogni richiesta. In ordine di quante volte è questa la risposta:

  1. Una query senza indice — Lo slow query log la nomina. Un indice di solito toglie secondi.
  2. La stessa query dentro un ciclo — Venti prodotti, venti query per le loro categorie. Una join le sostituisce tutte.
  3. Una chiamata esterna senza timeout — Un'API morta trattiene la sua pagina per tutto il tempo in cui il suo socket resta aperto.
  4. Nessuna cache di opcode — Senza opcache PHP ricompila ogni file a ogni richiesta.

Se è lento il browser

  • Le immagini. Di solito la maggior parte dei byte. Serva la misura che la pagina usa, non quella che ha prodotto la fotocamera.
  • I font. Ogni famiglia e ogni peso è un file, e un font che blocca il disegno trattiene tutta la pagina.
  • Gli script di terze parti. La parte più lenta della maggior parte delle pagine è codice che arriva dal server di qualcun altro.
Un plugin di cache su una pagina lenta nasconde il problema a lei e non al primo visitatore di ogni ciclo di cache. Sistemi la pagina, poi la metta in cache.
Misuri la stessa pagina tre volte, alla stessa ora del giorno, prima e dopo ogni modifica. Una modifica, una misura - altrimenti non saprà quale ha funzionato.