In this guide: Website speed terms explained: caching, minification, combining files, lazy loading, defer and async, preload and prefetch — what they mean and when to use…
Open any caching or performance plugin and you’ll see a list of settings: minify, combine, defer, async, preload, lazy load. Turning everything on might speed up your site — or break it. Understanding what each term means helps you choose the right settings.
Caching
Caching means storing a copy of something so it can be delivered faster next time.
- Page caching: saves the generated HTML of a page. Instead of running PHP and database queries on every visit, the server sends the saved version. The biggest win for WordPress.
- Browser caching: tells the visitor’s browser to keep files (images, CSS, JS) for a set time, so repeat visits are faster. Controlled by
Cache-Controlheaders. - Object caching: stores database query results in memory (Redis, Memcached).
- CDN caching: stores files on servers worldwide, close to visitors.
Watch out for: stale content after updates (purge the cache), and dynamic pages like carts that must not be cached for everyone.
Minification and combining
Minification removes unnecessary characters from code — spaces, line breaks, comments — without changing how it works.
/* Before */
.button {
color: #ffffff;
padding: 12px;
}
/* After */
.button{color:#fff;padding:12px}
It reduces file size modestly. Generally safe, though occasionally minifying JavaScript breaks poorly written scripts.
Combining (concatenation) merges multiple CSS or JS files into one. This mattered a lot with older HTTP/1.1. With HTTP/2 and HTTP/3, browsers can download many files at once efficiently, so combining is less important and can even hurt caching efficiency. Test before enabling.
Removing unused CSS goes further: it strips CSS rules the page doesn’t use. Powerful for heavy themes and page builders, but test carefully so interactive elements still look right.
Lazy loading
Lazy loading delays loading resources until they’re needed — typically images, videos, and iframes that appear further down the page.
- Speeds up initial load and saves data for visitors who don’t scroll.
- WordPress lazy-loads images by default with
loading="lazy". - Never lazy-load above-the-fold content like your hero image — it delays Largest Contentful Paint.
Related: video facades show a static thumbnail and load the full video player only when clicked.
Defer and async
By default, when a browser encounters a <script> tag in the HTML, it stops building the page to download and run the script. This is render-blocking.
async: downloads the script in the background and runs it as soon as it’s ready — possibly before the HTML is finished. Order isn’t guaranteed. Good for independent scripts like analytics.defer: downloads in the background and runs after the HTML is parsed, in order. Good for most site scripts.- Delay JavaScript (until interaction): some plugins wait to load certain scripts until the user scrolls, clicks, or moves the mouse. Very effective for chat widgets, ads, and trackers — but test that everything still works.
Critical CSS: extracts the styles needed for above-the-fold content and inlines them in the HTML, then loads the rest of the CSS without blocking rendering.
Preload and prefetch
These are resource hints that tell the browser what to fetch early.
-
Preload: “This file is needed very soon on this page — fetch it now.” Use for critical resources like the hero image or main web font.
html
<link rel="preload" href="/fonts/inter.woff2" as="font" type="font/woff2" crossorigin> -
Preconnect: “Set up a connection to this domain early.” Useful for important third-party domains (like a font CDN).
- DNS-prefetch: a lighter version that only resolves the domain name early.
- Prefetch: “This file might be needed on the next page — fetch it when idle.” Speeds up navigation.
- Speculation rules / prerender: modern browsers can load likely next pages in the background, making navigation feel instant. WordPress has added support for speculative loading.
Don’t preload too much — preloading everything means nothing is prioritized.
Which settings to enable
A safe starting configuration for most WordPress sites:
- ✅ Page caching and browser caching.
- ✅ Lazy loading (excluding hero images).
- ✅ Minify CSS and JavaScript.
- ✅ Defer JavaScript (test menus, sliders, forms).
- ⚠️ Delay JavaScript for third-party scripts (test carefully).
- ⚠️ Remove unused CSS / critical CSS (test layouts).
- ⚠️ Combine files (often unnecessary on HTTP/2+).
- ✅ Preload the hero image and main font.
Enable settings one at a time and test after each. See How to Speed Up WordPress: 20 Proven Tips.
Further reading: OWASP Top 10 web security risks
Key Takeaways: Lazy Loading
- Caching stores ready-made copies for faster delivery.
- Minification shrinks code; combining matters less with HTTP/2+.
- Lazy loading delays off-screen resources — never the hero image.
- Defer and async prevent scripts from blocking rendering.
- Preload critical files, prefetch likely next pages, and test every change.

