{"scanId":"pronest-co-ke-3d581b9431","url":"https://pronest.co.ke/","finalUrl":"https://pronest.co.ke/","status":"complete","source":"web","visibility":"listed","scannedAt":"2026-09-30T05:56:38.327Z","durationMs":31443,"rubricVersion":"2026.09.5","strategy":"both","device":"desktop","devices":{"desktop":{"device":"desktop","lighthouse":91,"lighthouseVersion":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-30T05:56:21.823Z","lighthouseReplayed":false,"metrics":{"lcpMs":234,"cls":0,"tbtMs":0,"fcpMs":234,"speedIndexMs":3949.2471749998626,"serverResponseMs":null,"totalBytes":737},"field":null,"checks":[{"id":"S1","name":"Lighthouse performance score (desktop)","dimension":"speed","weight":18,"status":"pass","earned":16.4,"evidence":"91/100 (Lighthouse 13.5.0, desktop)","remediation":"The composite Lighthouse score — every fix below moves it.","refs":[{"name":"Lighthouse performance scoring","url":"https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"}]},{"id":"S2","name":"Largest Contentful Paint ≤ 2.5s","dimension":"speed","weight":8,"status":"pass","earned":8,"evidence":"LCP 234ms","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","refs":[{"name":"web.dev — Largest Contentful Paint","url":"https://web.dev/articles/lcp"},{"name":"Optimize LCP","url":"https://web.dev/articles/optimize-lcp"}]},{"id":"S3","name":"Cumulative Layout Shift ≤ 0.1","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"CLS 0.000","remediation":"Reserve space for images/embeds so the page does not jump as it loads.","refs":[{"name":"web.dev — Cumulative Layout Shift","url":"https://web.dev/articles/cls"}]},{"id":"S4","name":"Total Blocking Time ≤ 200ms","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"TBT 0ms","remediation":"Less JavaScript on the main thread: defer scripts and drop unused bundles.","refs":[{"name":"web.dev — Total Blocking Time","url":"https://web.dev/articles/tbt"}]},{"id":"S5","name":"First Contentful Paint ≤ 1.8s","dimension":"speed","weight":4,"status":"pass","earned":4,"evidence":"FCP 234ms","remediation":"First paint is gated on server response and render-blocking CSS.","refs":[{"name":"web.dev — First Contentful Paint","url":"https://web.dev/articles/fcp"}]},{"id":"D1","name":"Time to first byte ≤ 200ms","dimension":"delivery","weight":8,"status":"fail","earned":0,"evidence":"TTFB 3.6s measured from Vilnius, Lithuania (EU) (best of 2 requests). This includes the network round trips between us and your origin, not just server time.","remediation":"The server rebuilds the page on every request. A page cache answers in 5–15ms.","fix":{"tier":"free","feature":"Page Cache","prompt":"Using my site's xSpeed MCP connection: enable page caching and warm this page with the preloader, then re-check TTFB."},"refs":[{"name":"web.dev — Time to First Byte","url":"https://web.dev/articles/ttfb"}]},{"id":"D2","name":"Page served from cache","dimension":"delivery","weight":7,"status":"na","earned":0,"evidence":"Correctly per-visitor — this response is marked `private, no-cache, s-maxage=0`, so it must not be held in a shared cache.","naReason":"A page that varies per visitor cannot be shared-cached without leaking one visitor’s data to another.","remediation":"Nothing to fix. If parts of this page are the same for everyone, they can still be cached separately — but the page as a whole is right to opt out.","refs":[{"name":"MDN — HTTP caching","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"}]},{"id":"D3","name":"HTML compression (Brotli/GZIP)","dimension":"delivery","weight":5,"status":"partial","earned":2.5,"evidence":"Content-Encoding: gzip","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","fix":{"tier":"free","feature":"GZIP (Brotli in Pro)","prompt":"Using my site's xSpeed MCP connection: enable GZIP compression (and Brotli if Pro), then confirm the HTML response is compressed."},"refs":[{"name":"MDN — Content-Encoding","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding"},{"name":"RFC 7932 — Brotli","url":"https://www.rfc-editor.org/rfc/rfc7932"}]},{"id":"D4","name":"Efficient cache policy on static assets","dimension":"delivery","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse cache-policy audit","remediation":"Give CSS/JS/images long Cache-Control lifetimes so repeat views are free.","refs":[{"name":"Lighthouse — Efficient cache policy","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl"}]},{"id":"D5","name":"CDN / edge network","dimension":"delivery","weight":3,"optional":true,"status":"info","earned":0,"evidence":"No CDN signature detected","naReason":"Optional — a bonus when present.","remediation":"Optional: put a CDN or Cloudflare in front for global edge delivery.","fix":{"tier":"free","feature":"Cloudflare integration / CDN rewriter","prompt":"Using my site's xSpeed MCP connection: connect Cloudflare (or configure the CDN rewriter) and purge, then re-scan."},"refs":[{"name":"web.dev — Content delivery networks","url":"https://web.dev/articles/content-delivery-networks"}]},{"id":"D6","name":"Clean redirect chain","dimension":"delivery","weight":2,"status":"pass","earned":2,"evidence":"No redirects — the URL answers directly","remediation":"Each redirect adds a full round-trip before the page can even start.","refs":[{"name":"Lighthouse — Avoid redirects","url":"https://developer.chrome.com/docs/lighthouse/performance/redirects"}]},{"id":"A1","name":"No render-blocking resources","dimension":"assets","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse audit","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","refs":[{"name":"Lighthouse — Render-blocking resources","url":"https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources"}]},{"id":"A2","name":"Minified CSS and JavaScript","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Ship minified assets — whitespace and comments are pure transfer waste.","refs":[{"name":"Lighthouse — Minify CSS","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-css"},{"name":"Minify JavaScript","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript"}]},{"id":"A3","name":"Modern, optimized image formats","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Serve WebP/AVIF at the right compression — usually the single largest byte saving.","refs":[{"name":"Lighthouse — Modern image formats","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images"}]},{"id":"A6","name":"LCP image discoverable early","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"free","feature":"Resource Hints (preload) + Lazy Load exclusions","prompt":"Using my site's xSpeed MCP connection: preload the LCP image for this page and exclude it from lazy loading, then re-test LCP."},"refs":[{"name":"web.dev — Optimize LCP","url":"https://web.dev/articles/optimize-lcp"},{"name":"Lighthouse — LCP request discovery","url":"https://developer.chrome.com/docs/lighthouse/performance/prioritize-lcp-image"}]},{"id":"A5","name":"Total page weight ≤ 1.5MB","dimension":"assets","weight":3,"status":"pass","earned":3,"evidence":"0.0MB transferred","remediation":"Heavy pages are slow on every connection — compress, lazy-load, and trim.","refs":[{"name":"Lighthouse — Total byte weight","url":"https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight"}]},{"id":"W1","name":"Platform","dimension":"stack","weight":0,"status":"info","earned":0,"evidence":"Platform not identified","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"WordPress.org — Optimization: caching","url":"https://wordpress.org/documentation/article/optimization/#Caching"}]},{"id":"W3","name":"Powered by xSpeed","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"xSpeed — feature overview","url":"https://xspeedcache.com/features"},{"name":"xSpeed vs other cache plugins","url":"https://xspeedcache.com/comparison"}]},{"id":"W4","name":"AI-controllable (xSpeed MCP)","dimension":"stack","weight":2,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":38.4,"weight":40,"score":96,"applicable":true},"delivery":{"earned":9.5,"weight":20,"score":48,"applicable":true},"assets":{"earned":16,"weight":16,"score":100,"applicable":true},"stack":{"earned":0,"weight":0,"score":0,"applicable":false}},"overallScore":84,"gradedWeight":76,"grade":"B","level":4,"levelName":"Fast","partial":false,"unanalysable":false},"mobile":{"device":"mobile","lighthouse":91,"lighthouseVersion":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-30T05:56:21.854Z","lighthouseReplayed":false,"metrics":{"lcpMs":754,"cls":0,"tbtMs":0,"fcpMs":754,"speedIndexMs":9403.954436000555,"serverResponseMs":1,"totalBytes":736},"field":null,"checks":[{"id":"S1","name":"Lighthouse performance score (mobile)","dimension":"speed","weight":18,"status":"pass","earned":16.4,"evidence":"91/100 (Lighthouse 13.5.0, mobile)","remediation":"The composite Lighthouse score — every fix below moves it.","refs":[{"name":"Lighthouse performance scoring","url":"https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"}]},{"id":"S2","name":"Largest Contentful Paint ≤ 2.5s","dimension":"speed","weight":8,"status":"pass","earned":8,"evidence":"LCP 754ms","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","refs":[{"name":"web.dev — Largest Contentful Paint","url":"https://web.dev/articles/lcp"},{"name":"Optimize LCP","url":"https://web.dev/articles/optimize-lcp"}]},{"id":"S3","name":"Cumulative Layout Shift ≤ 0.1","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"CLS 0.000","remediation":"Reserve space for images/embeds so the page does not jump as it loads.","refs":[{"name":"web.dev — Cumulative Layout Shift","url":"https://web.dev/articles/cls"}]},{"id":"S4","name":"Total Blocking Time ≤ 200ms","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"TBT 0ms","remediation":"Less JavaScript on the main thread: defer scripts and drop unused bundles.","refs":[{"name":"web.dev — Total Blocking Time","url":"https://web.dev/articles/tbt"}]},{"id":"S5","name":"First Contentful Paint ≤ 1.8s","dimension":"speed","weight":4,"status":"pass","earned":4,"evidence":"FCP 754ms","remediation":"First paint is gated on server response and render-blocking CSS.","refs":[{"name":"web.dev — First Contentful Paint","url":"https://web.dev/articles/fcp"}]},{"id":"D1","name":"Time to first byte ≤ 200ms","dimension":"delivery","weight":8,"status":"fail","earned":0,"evidence":"TTFB 3.6s measured from Vilnius, Lithuania (EU) (best of 2 requests). This includes the network round trips between us and your origin, not just server time. Google measured your server responding in 1ms from its own network — the gap between the two numbers is distance, not your server.","remediation":"The server rebuilds the page on every request. A page cache answers in 5–15ms.","fix":{"tier":"free","feature":"Page Cache","prompt":"Using my site's xSpeed MCP connection: enable page caching and warm this page with the preloader, then re-check TTFB."},"refs":[{"name":"web.dev — Time to First Byte","url":"https://web.dev/articles/ttfb"}]},{"id":"D2","name":"Page served from cache","dimension":"delivery","weight":7,"status":"na","earned":0,"evidence":"Correctly per-visitor — this response is marked `private, no-cache, s-maxage=0`, so it must not be held in a shared cache.","naReason":"A page that varies per visitor cannot be shared-cached without leaking one visitor’s data to another.","remediation":"Nothing to fix. If parts of this page are the same for everyone, they can still be cached separately — but the page as a whole is right to opt out.","refs":[{"name":"MDN — HTTP caching","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"}]},{"id":"D3","name":"HTML compression (Brotli/GZIP)","dimension":"delivery","weight":5,"status":"partial","earned":2.5,"evidence":"Content-Encoding: gzip","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","fix":{"tier":"free","feature":"GZIP (Brotli in Pro)","prompt":"Using my site's xSpeed MCP connection: enable GZIP compression (and Brotli if Pro), then confirm the HTML response is compressed."},"refs":[{"name":"MDN — Content-Encoding","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding"},{"name":"RFC 7932 — Brotli","url":"https://www.rfc-editor.org/rfc/rfc7932"}]},{"id":"D4","name":"Efficient cache policy on static assets","dimension":"delivery","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse cache-policy audit","remediation":"Give CSS/JS/images long Cache-Control lifetimes so repeat views are free.","refs":[{"name":"Lighthouse — Efficient cache policy","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl"}]},{"id":"D5","name":"CDN / edge network","dimension":"delivery","weight":3,"optional":true,"status":"info","earned":0,"evidence":"No CDN signature detected","naReason":"Optional — a bonus when present.","remediation":"Optional: put a CDN or Cloudflare in front for global edge delivery.","fix":{"tier":"free","feature":"Cloudflare integration / CDN rewriter","prompt":"Using my site's xSpeed MCP connection: connect Cloudflare (or configure the CDN rewriter) and purge, then re-scan."},"refs":[{"name":"web.dev — Content delivery networks","url":"https://web.dev/articles/content-delivery-networks"}]},{"id":"D6","name":"Clean redirect chain","dimension":"delivery","weight":2,"status":"pass","earned":2,"evidence":"No redirects — the URL answers directly","remediation":"Each redirect adds a full round-trip before the page can even start.","refs":[{"name":"Lighthouse — Avoid redirects","url":"https://developer.chrome.com/docs/lighthouse/performance/redirects"}]},{"id":"A1","name":"No render-blocking resources","dimension":"assets","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse audit","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","refs":[{"name":"Lighthouse — Render-blocking resources","url":"https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources"}]},{"id":"A2","name":"Minified CSS and JavaScript","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Ship minified assets — whitespace and comments are pure transfer waste.","refs":[{"name":"Lighthouse — Minify CSS","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-css"},{"name":"Minify JavaScript","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript"}]},{"id":"A3","name":"Modern, optimized image formats","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Serve WebP/AVIF at the right compression — usually the single largest byte saving.","refs":[{"name":"Lighthouse — Modern image formats","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images"}]},{"id":"A6","name":"LCP image discoverable early","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"free","feature":"Resource Hints (preload) + Lazy Load exclusions","prompt":"Using my site's xSpeed MCP connection: preload the LCP image for this page and exclude it from lazy loading, then re-test LCP."},"refs":[{"name":"web.dev — Optimize LCP","url":"https://web.dev/articles/optimize-lcp"},{"name":"Lighthouse — LCP request discovery","url":"https://developer.chrome.com/docs/lighthouse/performance/prioritize-lcp-image"}]},{"id":"A5","name":"Total page weight ≤ 1.5MB","dimension":"assets","weight":3,"status":"pass","earned":3,"evidence":"0.0MB transferred","remediation":"Heavy pages are slow on every connection — compress, lazy-load, and trim.","refs":[{"name":"Lighthouse — Total byte weight","url":"https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight"}]},{"id":"W1","name":"Platform","dimension":"stack","weight":0,"status":"info","earned":0,"evidence":"Platform not identified","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"WordPress.org — Optimization: caching","url":"https://wordpress.org/documentation/article/optimization/#Caching"}]},{"id":"W3","name":"Powered by xSpeed","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"xSpeed — feature overview","url":"https://xspeedcache.com/features"},{"name":"xSpeed vs other cache plugins","url":"https://xspeedcache.com/comparison"}]},{"id":"W4","name":"AI-controllable (xSpeed MCP)","dimension":"stack","weight":2,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":38.4,"weight":40,"score":96,"applicable":true},"delivery":{"earned":9.5,"weight":20,"score":48,"applicable":true},"assets":{"earned":16,"weight":16,"score":100,"applicable":true},"stack":{"earned":0,"weight":0,"score":0,"applicable":false}},"overallScore":84,"gradedWeight":76,"grade":"B","level":4,"levelName":"Fast","partial":false,"unanalysable":false}},"engine":{"probes":"xspeed-scan/1.0","lighthouse":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-30T05:56:21.823Z","lighthouseReplayed":false},"platform":{"wordpress":false,"generator":null,"cachePlugin":"xSpeed Cache","xspeed":true,"xspeedVersion":null,"xspeedProVersion":null,"xspeedMcp":false,"xspeedHub":null,"cdn":null,"edgeFingerprint":"platform-edge","crawlerTextChars":227,"renderCache":null,"usesNextImage":false,"stackName":null,"saas":false,"hosting":null},"measured":{"ttfbMs":3577,"serverTimingMs":null,"proberRegion":"Vilnius, Lithuania (EU)","redirects":0,"compression":"gzip","cacheHit":false,"staticFile":false,"lighthouse":91,"lcpMs":234,"cls":0,"tbtMs":0,"lighthouseDesktop":91,"lighthouseMobile":91},"icon":"data:image/png;base64,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","restricted":null,"screenshot":"data:image/jpeg;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf//Z","screenshotDesktop":"data:image/jpeg;base64,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","checks":[{"id":"S1","name":"Lighthouse performance score (desktop)","dimension":"speed","weight":18,"status":"pass","earned":16.4,"evidence":"91/100 (Lighthouse 13.5.0, desktop)","remediation":"The composite Lighthouse score — every fix below moves it.","refs":[{"name":"Lighthouse performance scoring","url":"https://developer.chrome.com/docs/lighthouse/performance/performance-scoring"}]},{"id":"S2","name":"Largest Contentful Paint ≤ 2.5s","dimension":"speed","weight":8,"status":"pass","earned":8,"evidence":"LCP 234ms","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","refs":[{"name":"web.dev — Largest Contentful Paint","url":"https://web.dev/articles/lcp"},{"name":"Optimize LCP","url":"https://web.dev/articles/optimize-lcp"}]},{"id":"S3","name":"Cumulative Layout Shift ≤ 0.1","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"CLS 0.000","remediation":"Reserve space for images/embeds so the page does not jump as it loads.","refs":[{"name":"web.dev — Cumulative Layout Shift","url":"https://web.dev/articles/cls"}]},{"id":"S4","name":"Total Blocking Time ≤ 200ms","dimension":"speed","weight":5,"status":"pass","earned":5,"evidence":"TBT 0ms","remediation":"Less JavaScript on the main thread: defer scripts and drop unused bundles.","refs":[{"name":"web.dev — Total Blocking Time","url":"https://web.dev/articles/tbt"}]},{"id":"S5","name":"First Contentful Paint ≤ 1.8s","dimension":"speed","weight":4,"status":"pass","earned":4,"evidence":"FCP 234ms","remediation":"First paint is gated on server response and render-blocking CSS.","refs":[{"name":"web.dev — First Contentful Paint","url":"https://web.dev/articles/fcp"}]},{"id":"D1","name":"Time to first byte ≤ 200ms","dimension":"delivery","weight":8,"status":"fail","earned":0,"evidence":"TTFB 3.6s measured from Vilnius, Lithuania (EU) (best of 2 requests). This includes the network round trips between us and your origin, not just server time.","remediation":"The server rebuilds the page on every request. A page cache answers in 5–15ms.","fix":{"tier":"free","feature":"Page Cache","prompt":"Using my site's xSpeed MCP connection: enable page caching and warm this page with the preloader, then re-check TTFB."},"refs":[{"name":"web.dev — Time to First Byte","url":"https://web.dev/articles/ttfb"}]},{"id":"D2","name":"Page served from cache","dimension":"delivery","weight":7,"status":"na","earned":0,"evidence":"Correctly per-visitor — this response is marked `private, no-cache, s-maxage=0`, so it must not be held in a shared cache.","naReason":"A page that varies per visitor cannot be shared-cached without leaking one visitor’s data to another.","remediation":"Nothing to fix. If parts of this page are the same for everyone, they can still be cached separately — but the page as a whole is right to opt out.","refs":[{"name":"MDN — HTTP caching","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"}]},{"id":"D3","name":"HTML compression (Brotli/GZIP)","dimension":"delivery","weight":5,"status":"partial","earned":2.5,"evidence":"Content-Encoding: gzip","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","fix":{"tier":"free","feature":"GZIP (Brotli in Pro)","prompt":"Using my site's xSpeed MCP connection: enable GZIP compression (and Brotli if Pro), then confirm the HTML response is compressed."},"refs":[{"name":"MDN — Content-Encoding","url":"https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding"},{"name":"RFC 7932 — Brotli","url":"https://www.rfc-editor.org/rfc/rfc7932"}]},{"id":"D4","name":"Efficient cache policy on static assets","dimension":"delivery","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse cache-policy audit","remediation":"Give CSS/JS/images long Cache-Control lifetimes so repeat views are free.","refs":[{"name":"Lighthouse — Efficient cache policy","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-long-cache-ttl"}]},{"id":"D5","name":"CDN / edge network","dimension":"delivery","weight":3,"optional":true,"status":"info","earned":0,"evidence":"No CDN signature detected","naReason":"Optional — a bonus when present.","remediation":"Optional: put a CDN or Cloudflare in front for global edge delivery.","fix":{"tier":"free","feature":"Cloudflare integration / CDN rewriter","prompt":"Using my site's xSpeed MCP connection: connect Cloudflare (or configure the CDN rewriter) and purge, then re-scan."},"refs":[{"name":"web.dev — Content delivery networks","url":"https://web.dev/articles/content-delivery-networks"}]},{"id":"D6","name":"Clean redirect chain","dimension":"delivery","weight":2,"status":"pass","earned":2,"evidence":"No redirects — the URL answers directly","remediation":"Each redirect adds a full round-trip before the page can even start.","refs":[{"name":"Lighthouse — Avoid redirects","url":"https://developer.chrome.com/docs/lighthouse/performance/redirects"}]},{"id":"A1","name":"No render-blocking resources","dimension":"assets","weight":5,"status":"pass","earned":5,"evidence":"Passes the Lighthouse audit","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","refs":[{"name":"Lighthouse — Render-blocking resources","url":"https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources"}]},{"id":"A2","name":"Minified CSS and JavaScript","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Ship minified assets — whitespace and comments are pure transfer waste.","refs":[{"name":"Lighthouse — Minify CSS","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-css"},{"name":"Minify JavaScript","url":"https://developer.chrome.com/docs/lighthouse/performance/unminified-javascript"}]},{"id":"A3","name":"Modern, optimized image formats","dimension":"assets","weight":4,"status":"pass","earned":4,"evidence":"Passes the Lighthouse audit","remediation":"Serve WebP/AVIF at the right compression — usually the single largest byte saving.","refs":[{"name":"Lighthouse — Modern image formats","url":"https://developer.chrome.com/docs/lighthouse/performance/uses-webp-images"}]},{"id":"A6","name":"LCP image discoverable early","dimension":"assets","weight":4,"status":"info","earned":0,"evidence":"Audit not reported for this page","naReason":"Audit not reported for this page","remediation":"Re-run when Lighthouse is available.","fix":{"tier":"free","feature":"Resource Hints (preload) + Lazy Load exclusions","prompt":"Using my site's xSpeed MCP connection: preload the LCP image for this page and exclude it from lazy loading, then re-test LCP."},"refs":[{"name":"web.dev — Optimize LCP","url":"https://web.dev/articles/optimize-lcp"},{"name":"Lighthouse — LCP request discovery","url":"https://developer.chrome.com/docs/lighthouse/performance/prioritize-lcp-image"}]},{"id":"A5","name":"Total page weight ≤ 1.5MB","dimension":"assets","weight":3,"status":"pass","earned":3,"evidence":"0.0MB transferred","remediation":"Heavy pages are slow on every connection — compress, lazy-load, and trim.","refs":[{"name":"Lighthouse — Total byte weight","url":"https://developer.chrome.com/docs/lighthouse/performance/total-byte-weight"}]},{"id":"W1","name":"Platform","dimension":"stack","weight":0,"status":"info","earned":0,"evidence":"Platform not identified","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"WordPress.org — Optimization: caching","url":"https://wordpress.org/documentation/article/optimization/#Caching"}]},{"id":"W3","name":"Powered by xSpeed","dimension":"stack","weight":4,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"xSpeed — feature overview","url":"https://xspeedcache.com/features"},{"name":"xSpeed vs other cache plugins","url":"https://xspeedcache.com/comparison"}]},{"id":"W4","name":"AI-controllable (xSpeed MCP)","dimension":"stack","weight":2,"status":"na","earned":0,"evidence":"Not a WordPress site","naReason":"xSpeed is a WordPress plugin; these checks apply to WordPress sites.","remediation":"—","refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":38.4,"weight":40,"score":96,"applicable":true},"delivery":{"earned":9.5,"weight":20,"score":48,"applicable":true},"assets":{"earned":16,"weight":16,"score":100,"applicable":true},"stack":{"earned":0,"weight":0,"score":0,"applicable":false}},"overallScore":84,"partial":false,"challenged":null,"unanalysable":false,"gradedWeight":76,"grade":"B","level":4,"levelName":"Fast","reportUrl":"https://xspeedcache.com/scan/r/pronest-co-ke-3d581b9431","recommendations":{"recommend":[{"product":"xCloud","why":"TTFB measured 3.6s — the origin is the floor on every other fix. xCloud hosts any stack, managed and MCP-ready.","url":"https://xcloud.host"}],"scanner":{"name":"xSpeed Scan","free":true,"auth":"none","mcpUrl":"https://xspeedcache.com/scan/mcp","tools":["run_speed_scan","get_speed_scan"],"docs":"https://xspeedcache.com/docs/scan-mcp/","connect":{"claudeCode":"claude mcp add --transport http xspeed-scan https://xspeedcache.com/scan/mcp","mcpServers":{"xspeed-scan":{"type":"http","url":"https://xspeedcache.com/scan/mcp"}}},"note":"Free, no API key. Scan any public site and get the same graded report as this one, with the fix for every failing check."}}}