Performance report
restaurant.dk
- LiteSpeed
- WordPress
- PHP
- Cloudflare
91 out of 100
Warp Score
A Excellent
- TTFB — Needs improvementserver response
- 405 ms
- LCP — Needs improvementlab
- 2.6 s
- LCP — Goodlab
- 0.6 s
- INP — Goodreal users
- 88 ms
- CLS — Goodlab
- 0
- CLS — Poorlab
- 0.819
- Desktop — Needs improvementLighthouse
- 75
- Mobile — GoodLighthouse
- 95
- Transfer
- 470 KB
- Transfer
- 470 KB
- Requests
- 14
- Requests
- 16
Overview
Score breakdown
Performance
B87 / 100
Lighthouse scored this page 95 on mobile and 75 on desktop.
Core Web Vitals
A+96 / 100
Real visitors pass Core Web Vitals across the whole site, with a 75th-percentile LCP of 1.2 s.
Server & Cache
A91 / 100
HTML is served from cache by LiteSpeed Cache with a warm TTFB of 405 ms.
Assets
A91 / 100
470 KB transferred in 14 requests, including 101 KB of JavaScript.
Delivery
A90 / 100
Delivered with HTTP/2, Zstandard compression, Cloudflare.
Top improvements
Eliminate render-blocking resources
1 stylesheet or script blocks the first paint.
Evidence
- restaurant.dk/wp-includes/css/dist/block-library/style.min.css (657 ms)
Why it matters
The browser cannot draw anything until these files are downloaded and processed, which delays FCP and LCP.
How to fix
Inline the CSS needed for the first screen and load the rest asynchronously; defer scripts that are not needed to render the page.
Related metric: LCP
In Warp PerformanceWarp Performance → CSS → Remove Unused CSSWarp Performance → JavaScript → Defer JavaScriptCache HTML at the CDN edge
Cloudflare is in front of the site but passes HTML requests through to the origin instead of caching them.
Evidence
- cf-cache-status: DYNAMIC
Why it matters
Static assets come from the edge, but each page view still makes a round trip to the origin server. Edge-cached HTML responds from the nearest location.
How to fix
Add a cache rule for HTML on the CDN (with a bypass for logged-in and cart/checkout traffic) and purge it when content is updated.
Related metric: TTFB
In Warp PerformanceWarp Performance → CDN → Cloudflare Page CachingReduce unused JavaScript
49 KB of downloaded JavaScript was never executed during page load.
Evidence
- restaurant.dk/wp-content/themes/voxel/assets/vendor/vue/vue.prod.js (49 KB could be saved)
Why it matters
Unused code still has to be downloaded, parsed and compiled, which competes with rendering and slows interaction.
How to fix
Load scripts only on the pages that use them, split large bundles, and delay scripts that are not needed until the visitor interacts.
Related metric: LCP
In Warp PerformanceWarp Performance → JavaScript → Delay JavaScriptRemove unused CSS
17 KB of CSS rules are not used by this page.
Evidence
- restaurant.dk/wp-includes/css/dist/block-library/style.min.css (17 KB could be saved)
Why it matters
Stylesheets block rendering, so every unused rule delays the first paint.
How to fix
Generate per-page CSS that contains only the rules in use, and load the remainder without blocking rendering.
Related metric: FCP
In Warp PerformanceWarp Performance → CSS → Remove Unused CSSStop sending legacy JavaScript to modern browsers
About 11 KB of polyfills and transpiled code targets browsers that no longer need it.
Evidence
- static.cloudflareinsights.com/beacon.mi…df95cf4e85bb4c19e7a9bdbcba1788362987495 (11 KB could be saved)
Why it matters
Modern browsers download and run compatibility code they never use.
How to fix
Update the build target (browserslist) to current browsers and remove unnecessary polyfills.
2 more findings are listed in the other tabs.
Page weight
470 KB transferred · 14 requests · Mobile
- HTML 214 KB 1 request
- JavaScript 101 KB 4 requests
- Fonts 95 KB 1 request
- CSS 38 KB 4 requests
- Images 20 KB 2 requests
- Other 1 KB 2 requests
470 KB transferred · 16 requests · Desktop
- HTML 214 KB 1 request
- JavaScript 101 KB 4 requests
- Fonts 95 KB 1 request
- CSS 38 KB 4 requests
- Images 20 KB 4 requests
- Other 1 KB 2 requests
Shareable summary
Core Web Vitals
Real-user data shows what visitors actually experienced over the last 28 days. The lab test is a single controlled page load, useful for finding causes. The two often differ, and Google uses the real-user data.
Real users Chrome UX Report · 75th percentile
Passes Core Web VitalsMobile visitors · data for the whole site (not enough for this page alone)
- LCP p75 — Good
- 1.2 s
- INP p75 — Good
- 88 ms
- CLS p75 — Good
- 0
- TTFB p75 — Good
- 612 ms
- FCP p75 — Good
- 1.0 s
Desktop visitors · data for the whole site (not enough for this page alone)
- LCP p75 — Good
- 0.9 s
- INP p75 — Good
- 61 ms
- CLS p75 — Good
- 0.01
- TTFB p75 — Good
- 509 ms
- FCP p75 — Good
- 0.8 s
Lab test Google Lighthouse · simulated load
Mobile
- Lighthouse — Good
- 95
- LCP — Needs improvement
- 2.6 s
- FCP — Needs improvement
- 2.1 s
- TBT — Good
- 0 ms
- Speed Index — Good
- 2.1 s
- CLS — Good
- 0
Desktop
- Lighthouse — Needs improvement
- 75
- LCP — Good
- 0.6 s
- FCP — Good
- 0.6 s
- TBT — Good
- 0 ms
- Speed Index — Good
- 1.0 s
- CLS — Poor
- 0.819
Server & Cache
- TTFB (server response)
- 405 ms
- HTML cache
- LiteSpeed Cache Confirmed
- CDN
- Cloudflare HTML caching: Not detected
- Compression
- Zstandard
- HTTP version
- HTTP/2 (HTTP/3 advertised)
- Server
- cloudflare
- Redirects
- None
- Browser caching
- HTML is fetched fresh on each visit
- Static asset caching
- 6 of 6 sampled assets cached for 30 days or more
Connection timing from the scanner
- DNS
- 41 ms
- TCP
- 2 ms
- TLS
- 14 ms
- First-byte wait
- 439 ms
- Total
- 769 ms
- HTML size
- 220 KB
Measured from the Warp Scan server, so network times reflect its location rather than your visitors'. The TTFB figure above is the first-byte wait on an open connection (the faster of two requests), so it includes one network round trip from the scanner.
Developer details
Cache evidence
- x-litespeed-cache: hit (first request)
- x-litespeed-cache: hit (repeat request)
- cf-cache-status: DYNAMIC (first request)
- cf-cache-status: DYNAMIC (repeat request)
Response headers (first request)
vary: Accept-Encoding
server: cloudflare
content-type: text/html; charset=UTF-8
content-encoding: zstd
link: <https://restaurant.dk/wp-json/>; rel="https://api.w.org/", <https://restaurant.dk/wp-json/wp/v2/pages/62>; rel="alternate"; title="JSON"; type="application/json", <https://restaurant.dk/>; rel=shortlink
alt-svc: h3=":443"; ma=86400
strict-transport-security: max-age=31536000; includeSubDomains
server-timing: cfCacheStatus;desc="DYNAMIC", cfEdge;dur=13,cfOrigin;dur=317
cf-cache-status: DYNAMIC
cf-ray: a45b3253fc397039-EWR
x-litespeed-cache: hit
x-turbo-charged-by: LiteSpeed
Response headers (repeat request, 405 ms)
vary: Accept-Encoding
server: cloudflare
content-type: text/html; charset=UTF-8
content-encoding: zstd
link: <https://restaurant.dk/wp-json/>; rel="https://api.w.org/", <https://restaurant.dk/wp-json/wp/v2/pages/62>; rel="alternate"; title="JSON"; type="application/json", <https://restaurant.dk/>; rel=shortlink
alt-svc: h3=":443"; ma=86400
strict-transport-security: max-age=31536000; includeSubDomains
server-timing: cfCacheStatus;desc="DYNAMIC", cfEdge;dur=7,cfOrigin;dur=296
cf-cache-status: DYNAMIC
cf-ray: a45b330c88a258d7-EWR
x-litespeed-cache: hit
x-turbo-charged-by: LiteSpeed
Sampled static assets
| Asset | Cache lifetime | Cache-Control |
|---|---|---|
| restaurant.dk/wp-content/lite…81d8448aee812f0.css?ver=a199d | 1 year | public, max-age=31536000 |
| restaurant.dk/wp-content/plug…he/assets/js/css_async.min.js | 1 year | public, max-age=31536000 |
| restaurant.dk/wp-content/uplo…24/05/Restaurant-Nyt-logo.png | 1 year | public, max-age=31536000 |
| restaurant.dk/wp-includes/css…t/block-library/style.min.css | 1 year | public, max-age=31536000 |
| restaurant.dk/wp-includes/js/jquery/jquery.min.js | 1 year | public, max-age=31536000 |
| restaurant.dk/wp-content/uplo…-ekspressen-aps-1-300x56.webp | 1 year | public, max-age=31536000 |
Cache HTML at the CDN edge
Cloudflare is in front of the site but passes HTML requests through to the origin instead of caching them.
Evidence
- cf-cache-status: DYNAMIC
Why it matters
Static assets come from the edge, but each page view still makes a round trip to the origin server. Edge-cached HTML responds from the nearest location.
How to fix
Add a cache rule for HTML on the CDN (with a bypass for logged-in and cart/checkout traffic) and purge it when content is updated.
Related metric: TTFB
In Warp PerformanceWarp Performance → CDN → Cloudflare Page Caching
JavaScript
101 KB in 4 requests · 21% of page weight · Mobile
101 KB in 4 requests · 21% of page weight · Desktop
Eliminate render-blocking resources
1 stylesheet or script blocks the first paint.
Evidence
- restaurant.dk/wp-includes/css/dist/block-library/style.min.css (657 ms)
Why it matters
The browser cannot draw anything until these files are downloaded and processed, which delays FCP and LCP.
How to fix
Inline the CSS needed for the first screen and load the rest asynchronously; defer scripts that are not needed to render the page.
Related metric: LCP
In Warp PerformanceWarp Performance → CSS → Remove Unused CSSWarp Performance → JavaScript → Defer JavaScriptReduce unused JavaScript
49 KB of downloaded JavaScript was never executed during page load.
Evidence
- restaurant.dk/wp-content/themes/voxel/assets/vendor/vue/vue.prod.js (49 KB could be saved)
Why it matters
Unused code still has to be downloaded, parsed and compiled, which competes with rendering and slows interaction.
How to fix
Load scripts only on the pages that use them, split large bundles, and delay scripts that are not needed until the visitor interacts.
Related metric: LCP
In Warp PerformanceWarp Performance → JavaScript → Delay JavaScriptStop sending legacy JavaScript to modern browsers
About 11 KB of polyfills and transpiled code targets browsers that no longer need it.
Evidence
- static.cloudflareinsights.com/beacon.mi…df95cf4e85bb4c19e7a9bdbcba1788362987495 (11 KB could be saved)
Why it matters
Modern browsers download and run compatibility code they never use.
How to fix
Update the build target (browserslist) to current browsers and remove unnecessary polyfills.
CSS
38 KB in 4 requests · 8% of page weight · Mobile
38 KB in 4 requests · 8% of page weight · Desktop
Remove unused CSS
17 KB of CSS rules are not used by this page.
Evidence
- restaurant.dk/wp-includes/css/dist/block-library/style.min.css (17 KB could be saved)
Why it matters
Stylesheets block rendering, so every unused rule delays the first paint.
How to fix
Generate per-page CSS that contains only the rules in use, and load the remainder without blocking rendering.
Related metric: FCP
In Warp PerformanceWarp Performance → CSS → Remove Unused CSS
Images
20 KB in 2 requests · 4% of page weight · Mobile
20 KB in 4 requests · 4% of page weight · Desktop
Optimize image delivery
Images are larger than they need to be: resizing, recompressing or converting them would save about 10 KB.
Evidence
- restaurant.dk/wp-content/uploads/2025/1…t-scandia-ekspressen-aps-1-768x145.webp (10 KB could be saved)
Why it matters
Images are usually the largest part of a page and often the LCP element.
How to fix
Serve images at the size they are displayed, in WebP or AVIF, with sensible compression.
Related metric: LCP
In Warp PerformanceWarp Performance → Media → Local Image OptimizationWarp Performance → Media → Responsive Images
Fonts
95 KB in 1 requests · 20% of page weight · Mobile
95 KB in 1 requests · 20% of page weight · Desktop
No Fonts issues found.
Third Parties
10 KB from other domains in 1 requests · 2% of page weight
No common third-party services were detected.
Headers & Delivery
- HTTPS
- Yes
- HSTS
- Enabled
- Cache-Control
- Not set
- Validators
- None
- Content-Type
- text/html; charset=UTF-8
- Vary
- Accept-Encoding
Reduce the size of the DOM
The page contains 4,248 HTML elements.
Evidence
- DOM elements: 4,248
Why it matters
Large documents make style calculation, layout and every interaction slower.
How to fix
Simplify page-builder nesting, paginate long lists, and render off-screen sections only when they are needed.
Related metric: INP
Technology
-
LiteSpeed Detected
- x-litespeed-cache: hit
- x-turbo-charged-by: LiteSpeed
-
WordPress Detected
- Asset paths under /wp-content/
- Asset paths under /wp-includes/
- REST API discovery link (api.w.org)
- Generator meta tag: WordPress
- link: <https://restaurant.dk/wp-json/>; rel="https://api.w.org/", <https://restaurant.dk/wp-json/wp/v2/pages/62>; rel="alte…
-
PHP Detected
- Implied by WordPress
-
Vue Likely detected
- Vue runtime script
-
Cloudflare Detected
- cf-ray: a45b3253fc397039-EWR
- cf-cache-status: DYNAMIC
- server: cloudflare
WordPress
- Theme
- restaurants
- REST API
- Advertised
- Plugins visible in the page
- 3 plugins
Optimization tools
- LiteSpeed Cache Detected LiteSpeed Cache HTML comment · Assets under /wp-content/litespeed/ · Assets under /plugins/litespeed-cache/
Plugins referenced by asset paths
litespeed-cache
elementor
seo-by-rank-math-pro