Core Web Vitals on a CMS site: the fixes that actually move the number
Performance work on content-managed sites tends to start with minification and end in disappointment. The metrics are dominated by a few specific things, and compressing CSS is rarely one of them.
Largest Contentful Paint is almost always an image
On a typical page the largest element is the hero. Serve it in a modern format, at the dimensions it will actually display, with explicit width and height. Crucially, do not lazy-load it — deferring the element the metric measures makes the score worse. Lazy-load everything below the fold instead.
Cumulative Layout Shift is reserved space
Every image, embed and advert needs dimensions or an aspect ratio set in CSS. Fonts shift text when they swap, so pair a fallback with similar metrics. Anything injected after load — cookie banners, notification bars — should occupy space from the start rather than pushing content down when it arrives.
Interaction latency is third-party JavaScript
Tag managers, chat widgets, heat maps and A/B testing tools compete with your own code for the main thread. Audit what is loading, delete what nobody reads, and defer what remains until after interaction. This is usually a conversation with marketing, not an engineering task.
Then cache properly
Serve static assets with long max-age and content hashes in filenames. Put a CDN in front. Let the CMS cache full pages for anonymous visitors, and understand which cache tags invalidate them — a page that is busted by every unrelated edit is effectively uncached.
Measure in the field
Lab tools are a diagnostic. Real-user data is the score. Fix what your actual visitors experience on the devices and connections they actually have.