Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Measurement And Symptom Isolation

Why a WordPress Site Is Fast for You but Slow for Real Visitors

Your WordPress site feels fast on your computer but customers report delays. Learn how cache, location, devices and real-user data reveal the difference.

You open the homepage and it appears immediately. The product page feels fine. You click around WordPress and cannot reproduce the delay a customer has described.

It is tempting to conclude that the website is not slow.

That conclusion is often wrong.

Your own visit is only one route through the system. It uses your device, your connection, your location, your browser state and, very often, a cache you have already warmed. A first-time visitor on a mid-range phone can receive a meaningfully different experience without either person being mistaken.

The job is not to decide whose impression is correct. It is to find the condition that separates the fast visits from the slow ones.

Start by defining what “slow” means

Ask for one specific page, action and moment. “The site is slow” is not yet a reproducible fault.

Useful descriptions sound like these:

  • the homepage stays blank for several seconds on the first visit;
  • the main image appears late on mobile;
  • the page appears quickly but the menu does not respond;
  • product pages are slow while normal pages are fine;
  • checkout becomes slow after the customer enters an address;
  • the first page is slow but later pages are fast.

These symptoms point to different layers. A delayed first byte is not repaired in the same way as a heavy hero image. A frozen button is not evidence of a slow database. Before installing another optimisation plugin, identify the part of the visit that is actually delayed.

Your browser may be showing you a warm cache

WordPress performance is frequently tested under the best possible conditions without anyone intending to do so.

You may already have:

  • the page stored in the full-page cache;
  • images, CSS, JavaScript and fonts in the browser cache;
  • a live DNS connection;
  • an open TLS connection to the server;
  • a CDN edge populated by your previous request.

A new visitor may have none of these advantages.

Open a private window and test the exact URL, but do not stop there. A private window removes part of your browser history; it does not guarantee an empty server cache or a different CDN edge.

If you can use a terminal, inspect the response headers:

curl -I https://example.com/page/

Look for headers added by the cache or CDN, such as cache-control, age, x-cache, cf-cache-status or a host-specific cache header. The exact name varies. A response marked HIT after your normal browser visit and MISS on the first uncached request explains why the two experiences differ.

Do not disable production caching simply to “make the test fair”. First record how the cached and uncached paths behave. The cache may be hiding a slow origin that still affects the first visitor after every expiry.

Measure the first byte separately from the rest of the page

A page can feel slow because the server takes too long to begin responding, or because the browser receives the HTML quickly and then struggles with its assets. Separate those stages.

The following command records basic connection timings without downloading the response body to the screen:

curl -s -o /dev/null 
  -w 'DNS: %{time_namelookup}snConnect: %{time_connect}snTLS: %{time_appconnect}snFirst byte: %{time_starttransfer}snTotal: %{time_total}sn' 
  https://example.com/page/

On Windows PowerShell, use curl.exe rather than the curl alias:

curl.exe -s -o NUL `
  -w "DNS: %{time_namelookup}s`nConnect: %{time_connect}s`nTLS: %{time_appconnect}s`nFirst byte: %{time_starttransfer}s`nTotal: %{time_total}s`n" `
  https://example.com/page/

One measurement is not a verdict. Repeat it several times and note whether the first request is slower. If the first-byte time is consistently high, investigate WordPress, PHP, MySQL, external API calls and hosting capacity. If the first byte is fast but the visual page is late, move your attention to images, fonts, CSS, JavaScript and third-party scripts.

Test from the visitor’s location, not only yours

Distance matters even when the server is healthy. A site hosted in Europe may feel immediate from Barcelona and noticeably slower from North America or Australia. The difference grows when every page requires several uncached round trips.

Use a test location that resembles the affected audience. Compare:

  • first-byte time;
  • Largest Contentful Paint;
  • total transferred bytes;
  • number of requests;
  • cache status;
  • the asset or request responsible for the longest delay.

Do not move hosting based on one remote test. A slow third-party script or oversized image will remain slow on a new server. Location testing is useful because it tells you which part of the journey becomes expensive with distance.

Your device may be hiding front-end work

A modern laptop on fibre can process JavaScript and decode images far more quickly than a customer’s phone. This is one reason a desktop administrator can see a smooth page while mobile visitors experience delayed buttons and jerky scrolling.

In the browser developer tools, apply a mobile viewport and CPU/network throttling. Reload the page with the Network panel open. Check:

  • which request begins the main image download;
  • whether a large script occupies the main thread;
  • whether the browser downloads desktop-sized images on a narrow screen;
  • whether fonts block visible text;
  • whether a consent manager delays essential scripts;
  • whether layout moves after late assets arrive.

Throttling is a model, not a substitute for real-user data. Its value is reproducibility: it can reveal work your own hardware completes too quickly for you to notice.

Logged-in WordPress visits are a special case

Administrators often test while logged in. That can make the page either slower or different.

Many WordPress cache systems bypass full-page cache when they detect a logged-in cookie. The administration toolbar adds markup and assets. Editing or analytics plugins may behave differently for administrators. At the same time, some public scripts or consent flows may be disabled for your account.

Test both states:

  1. logged in as the normal administrator;
  2. logged out in a clean browser;
  3. first visit with no existing site cookies;
  4. returning visit with cached assets.

Record the difference rather than optimising whichever state produces the most alarming score. Public visitors and administrators have different journeys, and both may matter.

Real-user data answers a different question from a lab test

PageSpeed Insights can show two kinds of evidence:

  • field data, collected from eligible Chrome visits over time;
  • a laboratory run performed under controlled conditions.

The lab run asks, “What happened in this simulated visit?” Field data asks, “What have real Chrome users experienced across many visits?”

They can disagree for legitimate reasons:

  • field data includes slower devices and networks;
  • the laboratory test may use a different location;
  • real users visit more page types than the URL you tested;
  • cached and uncached visits are mixed;
  • consent, login and geographic conditions change the page;
  • recent improvements may not yet be reflected in the historical window.

If field data reports poor experience but your laboratory run looks good, do not dismiss the field result. Segment your analytics and performance monitoring by page type, device and country. The slow population may be hidden inside a reassuring average.

Check whether only one template or journey is affected

A WordPress website is not one page. It may contain a light homepage, heavy product templates, search results, account pages and uncached checkout requests.

Build a small test set:

  • homepage;
  • representative service or content page;
  • heaviest landing page;
  • WordPress search result;
  • WooCommerce product;
  • cart and checkout, if present;
  • logged-in account area, if it is commercially important.

If one template is slow, a site-wide cache or hosting change may be too broad. For example, a product page may load every variation into JavaScript while the rest of the website remains healthy. Fixing that template is safer than rebuilding the entire performance stack.

Common causes of the “fast for me” gap

The pattern usually comes from one or more of these conditions:

A warmed page cache

Your repeated visits receive generated HTML immediately, while the first visitor waits for WordPress, plugins and MySQL.

Cached browser assets

Your browser does not download the large image, font or script again. A new visitor does.

Device and connection differences

Your computer processes a heavy page quickly. A mobile device spends longer downloading, parsing, compiling and rendering it.

Geographic distance

The affected visitors are farther from the server, CDN edge or third-party service.

Different pages or actions

You test the homepage. The customer is reporting product search, checkout, account login or a form.

Personalised or uncached traffic

Cookies, logged-in state, currency, language or WooCommerce sessions take the request outside the normal cache.

Intermittent resource pressure

The site is healthy when you look but slow during backups, cron jobs, traffic peaks or PHP worker exhaustion.

Changes to avoid before the cause is clear

Do not respond to this symptom by stacking optimisation plugins, enabling every minification option or changing hosting immediately.

Those actions can:

  • hide the original evidence;
  • introduce JavaScript failures;
  • cache WooCommerce pages that must remain dynamic;
  • produce several overlapping cache layers;
  • make before-and-after comparison impossible.

Preserve the current configuration and gather a reproducible fast case and slow case. The difference between them is more useful than another generic score.

A practical evidence pack for a performance assessment

Before requesting technical help, collect:

  • the exact slow URL;
  • the visitor’s country and device type;
  • the approximate time the issue occurred;
  • whether it affects the first visit or every visit;
  • whether the visitor was logged in;
  • a PageSpeed or browser waterfall if available;
  • recent plugin, theme, hosting, DNS or analytics changes;
  • response headers from one fast and one slow request.

Do not send passwords in an initial form. Access is only needed after the scope and safe diagnostic route are agreed.

The repair should close the gap, not just improve a score

A good outcome is not “the homepage scored 95 once”. It is that the affected visitor journey becomes measurably better and the reason is understood.

That may mean reducing a first-byte delay, correcting responsive images, removing unnecessary browser work, excluding checkout from cache or rescheduling a heavy WordPress task. The smallest verified change is usually more reliable than enabling a large bundle of optimisations at once.

If your WordPress site is fast on your own computer but customers still report delays, request a performance assessment with the affected URL and symptoms. The first review does not require passwords. We will identify the slow condition, explain the evidence and define the scope before any intervention.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident