{"scanId":"gulfthesiswriter-com-900f0ea54d","url":"https://gulfthesiswriter.com/","finalUrl":"https://gulfthesiswriter.com/","status":"complete","source":"web","visibility":"listed","scannedAt":"2026-09-28T14:06:03.726Z","durationMs":17697,"rubricVersion":"2026.09.5","strategy":"both","device":"desktop","devices":{"desktop":{"device":"desktop","lighthouse":99,"lighthouseVersion":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-28T14:05:54.540Z","lighthouseReplayed":false,"metrics":{"lcpMs":661.2185032317959,"cls":0,"tbtMs":0,"fcpMs":661.2185032317959,"speedIndexMs":1150.8741004272679,"serverResponseMs":1,"totalBytes":136840},"field":null,"checks":[{"id":"S1","name":"Lighthouse performance score (desktop)","dimension":"speed","weight":18,"status":"pass","earned":17.8,"evidence":"99/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 661ms","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 661ms","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 720ms 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":"pass","earned":7,"evidence":"Cache HIT evidence in response headers","remediation":"Serve HTML from a static cache instead of rebuilding it per visitor.","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":"pass","earned":5,"evidence":"Content-Encoding: br","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","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":"pass","earned":3,"evidence":"Cloudflare detected","remediation":"Serving through an edge network.","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":"fail","earned":0,"evidence":"Fails the Lighthouse audit — 8 files: jquery.min.js, frontend.min.css, jquery-migrate.min.js… · ~450ms of first paint","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","fix":{"tier":"pro","feature":"Critical CSS + Unused CSS removal","prompt":"Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test."},"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.1MB 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":"WordPress detected (WordPress 7.1.2)","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"pass","earned":4,"evidence":"xSpeed Cache (xSpeed signature: v1.3.6)","remediation":"WordPress rebuilds every page in PHP unless a caching plugin serves it statically.","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":"pass","earned":4,"evidence":"xSpeed signature: v1.3.6","remediation":"This site runs xSpeed — every fix in this report is one MCP prompt away.","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,"optional":true,"status":"info","earned":0,"evidence":"xSpeed MCP endpoint not reachable","naReason":"Optional — a bonus when present.","remediation":"Optional: connect xSpeed's built-in MCP server and your AI assistant can apply every fix in this report for you.","fix":{"tier":"free","feature":"MCP Server (built into xSpeed Free)","prompt":"In xSpeed → MCP Server, click Connect and paste the config into your AI client — then ask it to fix this report."},"refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":39.8,"weight":40,"score":99,"applicable":true},"delivery":{"earned":22,"weight":30,"score":73,"applicable":true},"assets":{"earned":11,"weight":16,"score":69,"applicable":true},"stack":{"earned":8,"weight":8,"score":100,"applicable":true}},"overallScore":86,"gradedWeight":94,"grade":"B","level":4,"levelName":"Fast","partial":false,"unanalysable":false},"mobile":{"device":"mobile","lighthouse":93,"lighthouseVersion":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-28T14:05:55.016Z","lighthouseReplayed":false,"metrics":{"lcpMs":2570.7799255221876,"cls":0,"tbtMs":0,"fcpMs":2570.7799255221876,"speedIndexMs":3088.928556418172,"serverResponseMs":2,"totalBytes":134908},"field":null,"checks":[{"id":"S1","name":"Lighthouse performance score (mobile)","dimension":"speed","weight":18,"status":"pass","earned":16.7,"evidence":"93/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":"partial","earned":4,"evidence":"LCP 2.6s","remediation":"Serve the hero content faster: cache the page, preload the LCP image, and ship critical CSS.","fix":{"tier":"free","feature":"Page Cache + Preloader (Critical CSS in Pro)","prompt":"Using my site's xSpeed MCP connection: enable page caching, start the preloader, and (on Pro) generate critical CSS for this page; then re-test LCP."},"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":"partial","earned":2,"evidence":"FCP 2.6s","remediation":"First paint is gated on server response and render-blocking CSS.","fix":{"tier":"free","feature":"Page Cache + CSS Minify","prompt":"Using my site's xSpeed MCP connection: enable page caching and CSS minification, then re-test First Contentful Paint."},"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 720ms 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 2ms 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":"pass","earned":7,"evidence":"Cache HIT evidence in response headers","remediation":"Serve HTML from a static cache instead of rebuilding it per visitor.","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":"pass","earned":5,"evidence":"Content-Encoding: br","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","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":"pass","earned":3,"evidence":"Cloudflare detected","remediation":"Serving through an edge network.","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":"fail","earned":0,"evidence":"Fails the Lighthouse audit — 8 files: jquery.min.js, hello-frontend.js, jquery-migrate.min.js… · ~1.9s of first paint","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","fix":{"tier":"pro","feature":"Critical CSS + Unused CSS removal","prompt":"Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test."},"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.1MB 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":"WordPress detected (WordPress 7.1.2)","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"pass","earned":4,"evidence":"xSpeed Cache (xSpeed signature: v1.3.6)","remediation":"WordPress rebuilds every page in PHP unless a caching plugin serves it statically.","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":"pass","earned":4,"evidence":"xSpeed signature: v1.3.6","remediation":"This site runs xSpeed — every fix in this report is one MCP prompt away.","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,"optional":true,"status":"info","earned":0,"evidence":"xSpeed MCP endpoint not reachable","naReason":"Optional — a bonus when present.","remediation":"Optional: connect xSpeed's built-in MCP server and your AI assistant can apply every fix in this report for you.","fix":{"tier":"free","feature":"MCP Server (built into xSpeed Free)","prompt":"In xSpeed → MCP Server, click Connect and paste the config into your AI client — then ask it to fix this report."},"refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":32.7,"weight":40,"score":82,"applicable":true},"delivery":{"earned":22,"weight":30,"score":73,"applicable":true},"assets":{"earned":11,"weight":16,"score":69,"applicable":true},"stack":{"earned":8,"weight":8,"score":100,"applicable":true}},"overallScore":78,"gradedWeight":94,"grade":"C","level":4,"levelName":"Fast","partial":false,"unanalysable":false}},"engine":{"probes":"xspeed-scan/1.0","lighthouse":"13.5.0","psiError":null,"lighthouseAnalysedAt":"2026-09-28T14:05:54.540Z","lighthouseReplayed":false},"platform":{"wordpress":true,"generator":"WordPress 7.1.2","cachePlugin":"xSpeed Cache","xspeed":true,"xspeedVersion":"1.3.6","xspeedProVersion":null,"xspeedMcp":false,"xspeedHub":null,"cdn":"Cloudflare","edgeFingerprint":"cf-dynamic","crawlerTextChars":44,"renderCache":null,"usesNextImage":false,"stackName":null,"saas":false,"hosting":null},"measured":{"ttfbMs":720,"serverTimingMs":null,"proberRegion":"Vilnius, Lithuania (EU)","redirects":0,"compression":"br","cacheHit":true,"staticFile":false,"lighthouse":99,"lcpMs":661.2185032317959,"cls":0,"tbtMs":0,"lighthouseDesktop":99,"lighthouseMobile":93},"icon":null,"restricted":null,"screenshot":"data:image/jpeg;base64,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","screenshotDesktop":"data:image/jpeg;base64,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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/9k=","checks":[{"id":"S1","name":"Lighthouse performance score (desktop)","dimension":"speed","weight":18,"status":"pass","earned":17.8,"evidence":"99/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 661ms","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 661ms","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 720ms 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":"pass","earned":7,"evidence":"Cache HIT evidence in response headers","remediation":"Serve HTML from a static cache instead of rebuilding it per visitor.","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":"pass","earned":5,"evidence":"Content-Encoding: br","remediation":"Compress text responses — Brotli typically saves ~15–20% over GZIP.","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":"pass","earned":3,"evidence":"Cloudflare detected","remediation":"Serving through an edge network.","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":"fail","earned":0,"evidence":"Fails the Lighthouse audit — 8 files: jquery.min.js, frontend.min.css, jquery-migrate.min.js… · ~450ms of first paint","remediation":"CSS/JS in <head> blocks first paint. Inline the critical CSS and defer the rest.","fix":{"tier":"pro","feature":"Critical CSS + Unused CSS removal","prompt":"Using my site's xSpeed MCP connection: generate critical CSS for the top pages and enable unused-CSS removal, then re-test."},"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.1MB 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":"WordPress detected (WordPress 7.1.2)","remediation":"Informational.","refs":[]},{"id":"W2","name":"Caching plugin active","dimension":"stack","weight":4,"status":"pass","earned":4,"evidence":"xSpeed Cache (xSpeed signature: v1.3.6)","remediation":"WordPress rebuilds every page in PHP unless a caching plugin serves it statically.","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":"pass","earned":4,"evidence":"xSpeed signature: v1.3.6","remediation":"This site runs xSpeed — every fix in this report is one MCP prompt away.","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,"optional":true,"status":"info","earned":0,"evidence":"xSpeed MCP endpoint not reachable","naReason":"Optional — a bonus when present.","remediation":"Optional: connect xSpeed's built-in MCP server and your AI assistant can apply every fix in this report for you.","fix":{"tier":"free","feature":"MCP Server (built into xSpeed Free)","prompt":"In xSpeed → MCP Server, click Connect and paste the config into your AI client — then ask it to fix this report."},"refs":[{"name":"Model Context Protocol","url":"https://modelcontextprotocol.io/"},{"name":"xSpeed documentation","url":"https://xspeedcache.com/docs"}]}],"dimensions":{"speed":{"earned":39.8,"weight":40,"score":99,"applicable":true},"delivery":{"earned":22,"weight":30,"score":73,"applicable":true},"assets":{"earned":11,"weight":16,"score":69,"applicable":true},"stack":{"earned":8,"weight":8,"score":100,"applicable":true}},"overallScore":86,"partial":false,"challenged":null,"unanalysable":false,"gradedWeight":94,"grade":"B","level":4,"levelName":"Fast","reportUrl":"https://xspeedcache.com/scan/r/gulfthesiswriter-com-900f0ea54d","recommendations":{"recommend":[{"product":"xSpeed's own MCP server","why":"xSpeed is installed but its MCP endpoint is not answering. Connecting it lets an AI assistant apply these fixes directly instead of describing them.","url":"https://xspeedcache.com/docs/mcp-server/"}],"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."}}}