"Slow" can mean the server takes long to answer, or the browser takes long to draw the page once it has the answer. Your site's Analytics tab measures the first on our servers, for every request. Start there.
Why it happens
- Your app takes long on some pages. A slow database query, a call to an outside API, or a page that does too much work.
- Your site is short of CPU or memory. Each site has its plan's share. On Starter that is 768 MB of memory and 0.5 (burst) vCPU; on Pro, 2 GB and 1 vCPU. A site may use more CPU than its share when the server has room, but not when the server is busy.
- Traffic you did not invite. Crawlers and scripts asking for many pages at once take the same workers your visitors need.
- Nothing is cached. On WordPress we keep finished pages for a short time and serve them without running PHP, but never to logged-in users or for URLs with a query string. Other PHP stacks have no page cache, because sessions and forms make it unsafe.
- The page is heavy in the browser. Large images, many scripts. The server can answer fast and the page still feels slow.
Fix it
- Measure. Open Sites, choose your site, then Analytics. Under Response time (server-side, per request), compare Median (p50) with Slowest 5% (p95). The p95 figure turns to a warning colour when it is high.
- Median and p95 both low, yet the site feels slow? The time goes in the browser. In your app: compress images, lazy-load them, and trim scripts. Test with your browser's developer tools.
- Median fine, p95 high? A few pages are slow. Go to step 2.
- Both high? The whole site is short of something. Go to step 3.
- Find the slow pages. Top pages shows what is asked for most. Look for errors and timeouts on the Logs tab under Web server errors (
upstream timed out) and in Application. In your app: enable your framework's slow-query log, add a database index, or cache the result of the slow call. - Check resources. Further down Analytics, Resources shows CPU now, Memory and Out-of-memory kills. Switch to 7 days. If CPU (cores) stays high through the slow periods, your site is using all the CPU it can get. Memory near the limit, or kills above zero, means you are short of memory: see "Allowed memory size exhausted" / out of memory.
- Check who is asking. Visitors vs. bots, Search & AI crawlers and Why traffic was counted as automation show how much of the load is automated. In your app: slow crawlers down with
robots.txt, and block the ones that ignore it. - WordPress: check the cache. Cache shows the hit ratio of cacheable requests. Bypassed requests skip the cache by design: logged-in users, shop carts, and URLs with a query string. Many Miss requests mean pages are not being kept; a plugin that sets a cookie on every page can stop them being stored.
- Still short after all that? A bigger plan gives more CPU and memory. Compare in Plans and add-ons.
Still stuck?
Contact us with the site name, a page that is slow, and the time you saw it. A Response time figure from Analytics helps more than a speed-test score, because it leaves out the network and the browser.