Every website relies on a single origin server to deliver its files. When a visitor loads your site, their browser requests images, stylesheets, and scripts from that server — and if the server is thousands of kilometres from the visitor, every request adds latency. A Content Delivery Network (CDN) fixes this by caching your static files on servers distributed around the world, so a visitor gets them from whichever edge server is physically closest rather than from your origin. Your origin only handles requests the CDN can’t already serve, which also cuts your hosting load.
This guide covers setup using bunny.net — the CDN previously known as BunnyCDN, rebranded after expanding beyond pure CDN into storage, video, and edge compute — one of the more cost-effective performance-focused providers available. It takes around 15–20 minutes and fits alongside the other speed improvements in the step-by-step guide to making a website.
What a CDN Actually Does — and Doesn’t
Once a CDN is active, your static assets get mirrored to edge servers worldwide. A visitor in Tokyo gets your images from a server in Asia; a visitor in Berlin gets them from Europe. Your origin server only gets involved when a file isn’t yet cached on the nearest edge server — typically just the first request for that file.
A CDN serves static files only: images, CSS, JavaScript, fonts, media uploads. Your admin area, checkout pages, and any personalised content still run through your origin server untouched — a distinction worth keeping in mind when configuring the CDN so nothing dynamic gets accidentally cached.
Page speed feeds directly into Core Web Vitals, and a CDN’s biggest lever is Largest Contentful Paint — the time it takes your largest visible element, usually an image, to load. Beyond rankings, there’s a plain UX case: every additional 100ms of load time measurably increases bounce rates, and if your audience is spread globally, a CDN is the difference between a site that feels fast everywhere and one that only feels fast near your server. It also trims bandwidth load on your hosting account, which matters on a shared or entry-level plan with bandwidth limits.
Setting Up bunny.net
bunny.net works via a pull zone — a CDN-side configuration that pulls files from your origin and caches them globally. You don’t touch your DNS or nameservers, and setup is a handful of steps.
Sign up at bunny.net. Pricing is usage-based, not a flat monthly fee: the Standard tier runs roughly $0.01/GB in North America and Europe up to around $0.06/GB in parts of Asia-Pacific, and a flat-rate Volume tier starts near $0.005/GB globally for higher-traffic sites — so you only pay for what visitors actually pull.
In the dashboard, go to CDN → Pull Zones and click Add Pull Zone. Name the zone, set the Origin URL to your site’s root (e.g. https://yourdomain.com), leave the rest at their defaults, and save. bunny.net assigns a CDN hostname — something like yourdomain-cdn.b-cdn.net — which you’ll need next.
On WordPress, go to Plugins → Add New, search “bunny.net”, and install the official plugin (still listed under its original bunnycdn slug, actively updated). Open its settings, enter your API key from the dashboard’s Account → API page, and the pull zone name. Under CDN Rewrite, the plugin automatically replaces your origin URLs with the CDN hostname across your page’s HTML output — images and assets start loading from the CDN with no manual URL editing.
Load your homepage with browser dev tools open (F12 → Network tab) and reload. The domain on image and CSS requests should now show your CDN hostname rather than your site domain — if it does, the setup is working. Run a PageSpeed Insights test before and after to measure the gap; in practice, a CDN typically cuts Time to First Byte by 20–40% for visitors geographically distant from the origin server.
To actually confirm the CDN is helping visitors far from your server, don’t just test from your own location — a free tool like KeyCDN’s Performance Test or WebPageTest lets you load your site from test nodes in multiple countries and compare Time to First Byte directly. A visitor in Sydney and a visitor in Amsterdam should see broadly similar load times once the CDN is genuinely serving them from a nearby edge node; if one region is still noticeably slower, that’s worth checking against the provider’s actual edge locations before assuming the CDN configuration is at fault.
Rolling It Out Without Breaking Anything
Purge the CDN cache after any significant theme or CSS update — the plugin includes a one-click purge button, and old files can otherwise sit cached on edge servers after a change ships. If you want to test safely, configure the rewrite for images only at first, confirm everything’s working, then expand to CSS and JS. And always test in a private/incognito window with browser cache cleared; a stale local cache can make a working CDN look broken.
Never let dynamic pages — checkout, cart, account — get served through CDN cache; most setups exclude these by default, but it’s worth checking the exclusion rules directly rather than assuming. And check the provider’s actual server map before committing: if most of your audience is in Southeast Asia and your CDN has thin coverage there, you won’t see the gains the numbers above suggest. A CDN and browser caching solve different problems and stack well together — the CDN shortens the network distance, browser caching skips the request entirely for repeat visitors — and pairing either with GZIP compression addresses file size on top of delivery speed, since none of the three overlap.
bunny.net vs Cloudflare vs Nothing
Cloudflare’s free plan is technically a CDN too, but it operates as a full reverse proxy — your DNS points to Cloudflare, which then proxies all traffic through it. That adds real security and control (DDoS protection, a web application firewall) at the cost of changing your nameservers and taking on more complexity. bunny.net is narrower by design: no DNS changes, purely focused on static asset delivery. Choose Cloudflare if you want the security layer alongside the speed gain; choose bunny.net if faster asset delivery is the only goal.
A CDN also isn’t a substitute for the two things it doesn’t touch. It closes the distance gap for cached static content, but not for a poorly placed origin server serving dynamic requests — if you haven’t checked this, choosing a server location for your website covers how to test your current host and decide whether a CDN, a server move, or both make sense. And it does nothing for database queries: if cart or account pages are still slow, pairing a CDN with setting up object caching tackles the part a CDN structurally cannot reach.
Adding a CDN is one of the higher-impact speed improvements available without changing hosting providers. Set up the pull zone, connect it, verify the network requests, and purge the cache whenever you push a significant update — the setup takes under 20 minutes and the improvement is measurable immediately.

Etienne Basson works with website systems, SEO-driven site architecture, and technical implementation. He writes practical guides on building, structuring, and optimizing websites for long-term growth.