Photo: free stock photography (Unsplash licence) — see imprint
What TTFB really measures
TTFB is the time from request to the first byte of the response: DNS, TLS, network, and — the part you control — your server thinking. If TTFB is 900ms, no amount of image optimisation will save your Core Web Vitals.
Cause one: no HTTP cache
An uncached Shopware category page rebuilds itself from the database on every hit. Varnish or the built-in HTTP cache turns that into a memory read. This is almost always the single biggest win, and it is a configuration change, not a rewrite.
Cause two: N+1 queries in a plugin
One plugin that loads the manufacturer inside a product loop turns 1 query into 51. Turn on the query profiler on staging with a real catalogue — the culprit is usually obvious within ten minutes and it is usually not the core.
Cause three to five
Missing database indexes on custom fields you filter by. A synchronous call to the ERP during page render — never do this. And a hosting plan whose CPU is shared with 200 other shops at 6 p.m. Check them in that order.
- Fix TTFB before touching images or JavaScript.
- HTTP cache is the biggest single win.
- Never call an ERP synchronously during render.
We do this for a living — Shopware, Node.js, React, ERP integration and automation for B2B.
Talk to an engineer