WooCommerce CDN

Fast WooCommerce, without breaking the cart

Cache the catalogue at the edge so product pages appear instantly, while cart, checkout and account stay live and personal. One preset, no plugin, and no 3am discovery that everyone is sharing a basket.

Why this matters here more than anywhere

On a shop, load time is a line in the P&L

A slow blog costs you readers. A slow shop costs you orders you can count — and WooCommerce is uncached PHP by default, which is exactly the wrong starting point for a catalogue.

+8.4%
retail conversions

Deloitte measured a 0.1-second improvement in load time lifting retail conversions by 8.4%, and average order value by 9.2%.

Deloitte, “Milliseconds Make Millions”

+32%
bounce probability

Going from a 1-second to a 3-second load makes a visitor 32% more likely to leave before your product page appears.

Google, mobile page speed research

1% of sales
per 100 ms

Amazon’s often-cited internal finding: every 100 ms of additional latency cost roughly 1% in sales.

Amazon, widely reported

Published industry research, not NordicCDN measurements — the exact numbers depend on your audience and your basket size. The direction does not.

The trick

Cache the catalogue, bypass the cart

"But my shop is dynamic" is the standard objection to caching, and it is only a quarter true. The catalogue — which is nearly all of your traffic — is identical for every anonymous visitor. Only the small, personal part needs to be live.

Shopperarrives no cart cookie has cart / login cookie Products · categories · search · home Cache hit at the edge~15 ms · origin untouched Cart · checkout · my-account · add-to-cart Straight to your originlive, personal, never cached Typically 90–95% of shop traffic takes the top path. The origin only handles the requests with money attached.
The WooCommerce preset configures this split for you — cookies, paths and AJAX endpoints included.
The preset, in full

The rules you would otherwise write yourself, at 11pm

This is not a black box. Here is exactly what picking "WooCommerce" configures — and you can edit any of it afterwards.

// bypass the cache when any of these cookies is present
woocommerce_cart_hash   woocommerce_items_in_cart   wp_woocommerce_session_*
woocommerce_recently_viewed   wordpress_logged_in_*   wordpress_sec_*   wp-*
// bypass the cache on any of these paths
/cart/*   /checkout/*   /my-account/*   /*add-to-cart=*
/wp-admin/*   /wp-login.php   /wp-json/*   /wp-cron.php   /xmlrpc.php
// and on these query parameters — the AJAX calls that change a basket
wc-ajax   add-to-cart   remove_item
// everything else → cached at the edge, served in ~15 ms

Cookies beat paths

A shopper with something in their basket gets live pages everywhere, not just on /cart. That is what keeps the header counter honest.

POST is never cached

Form submissions, AJAX basket updates and gateway callbacks always go to your origin, by definition.

Add your own

A wishlist plugin, a B2B pricing cookie, a custom checkout path — add it to the list and it is respected from the next config sync.

Campaign days

The traffic you spent all year working for

Black Friday, a newsletter that lands, an influencer post at the wrong moment. Two things protect you, and they work together.

Layer one

Most of the surge never reaches you

Ten thousand people hitting the same campaign landing page is one origin request and 9,999 cache hits. Your server spends its capacity on baskets and checkouts instead of rendering the same page ten thousand times.

Uncached
10,000 origin hits
Cached
a handful
Layer two

If it is still too much, queue it

Set how many shoppers your origin can comfortably serve at once. Beyond that, extra visitors get a branded waiting page showing their real position and an estimated wait, and are let in automatically as slots free up.

  • A queue that moves beats a site that times out
  • Your branding, your wording, your logo
  • Staff and known IPs skip the queue
  • Shoppers already in checkout are never evicted
Also included

The rest of the shop toolbox

Product image optimisation

Automatic WebP conversion and on-the-fly resizing. On a photo-heavy catalogue this is usually the biggest single win, and it needs no thumbnail regeneration.

Variant caching by cookie

Currency, country or language switchers keep working — the cache holds a separate copy per cookie value, so shoppers get their own variant at cache speed.

Multi-language storefront

Serve the whole shop in Swedish, Norwegian or German from /sv/ or a dedicated domain, with nothing installed. See website translation.

Bot and scraper blocking

Competitor price scrapers, credential stuffing on /my-account, and endless /wp-login.php probing all stopped at the edge before they reach your server.

Instant purge on price changes

Change a price and purge that product path — the next shopper sees the new price. Or let the optional plugin purge for you on update.

Stays up when your origin does not

Cached catalogue pages keep serving while your host has a wobble. Browsing continues even if checkout is briefly unavailable.

Brotli and minification

CSS and JavaScript compressed and minified on the way out, with no build step to add to your theme.

Real analytics

Traffic, cache hit ratio, geography and per-request log search — without adding another tracking script to a checkout page.

Getting started

Test a real order before anything goes public

Nobody should point a live shop at a new cache on trust. You do not have to.

  1. Create a Site Accelerator for your shop

    Pointing at your existing hosting. Nothing on the server changes and no plugin is installed.

  2. Pick the WooCommerce preset

    Cart, checkout, account, session cookies and AJAX endpoints configured in one click.

  3. Run a full test order on the temporary hostname

    Browse the catalogue, add to cart, apply a coupon, check out. Confirm the header counter behaves and the order lands. All before public DNS moves.

  4. Move the DNS record

    Let the certificate issue and you are live. Watch the cache hit ratio climb in analytics over the first hour.

Related: WordPress CDN · Image CDN · Website translation · Site Accelerators

FAQ

Questions, answered

No — this is the whole design problem, and the preset solves it. Cart, checkout and my-account are never cached, and any shopper carrying a WooCommerce cart or session cookie is served fresh from your origin no matter which page they are on. Product and category pages are cached for everyone else. Nobody ever sees somebody else's cart.
That is the classic wrinkle. As soon as a shopper has anything in their cart they carry a cart cookie, so their pages come live from the origin and the counter is correct. Before that, the counter is zero and the cached page is right too. If your theme does something unusual here, the counter can also be filled in client-side or with an ESI fragment while the rest of the page stays cached.
Their login cookie triggers a bypass, so they get live, uncached pages with their own account, order history and any customer-specific pricing.
No. Everything happens at the edge, so there is nothing to install and nothing to conflict with your existing WooCommerce extensions — which, on a shop with thirty plugins, is a genuine relief.
Supported. Tell the zone which cookie decides the variant — a currency or country cookie, for example — and the cache keeps a separate copy per value. Shoppers get their own currency, and it is still a cache hit.
Converted to WebP and resized on the fly at the edge. On a catalogue full of photographs this is very often the single biggest speed win, ahead of everything else on this page.
That is what it is for. Cached catalogue pages take almost all the load off your origin, so the server has capacity left for the requests that actually matter — the ones with money attached. If it still gets too much, the waiting room queues the overflow with a branded page and a real position, so checkout keeps working instead of everything timing out.
Yes. Checkout is never cached and gateway callbacks are ordinary POST requests, which are always passed straight through to your origin.
Test it. Every zone gets a temporary hostname that works immediately, so you can browse the catalogue, add to cart, apply a coupon and run a full test order before touching public DNS.

Speed up your WooCommerce store

Start free in two minutes — 25 GB free every month, no card required.

Start free