Cache Warmer.

No first visitor has to wait — scheduled warming of all caches, multi-shop and customer-group aware.

01
How it works

No first visitor should have to wait.

Instead of hoping the first real visitor will fill the cache, we do it beforehand — scheduled, complete, with the right customer groups.

Scheduled

Cron + live mode

Cache warming can be tied to a cron job (overnight, early morning) — or triggered live after a theme deploy.

Complete

All pages, all languages

Product detail pages, listings, CMS pages, category pages — for every active storefront language and sales channel.

Customer-group-aware

Including B2B prices

Each customer group gets its own cache run. B2B prices, net displays, restricted assortments — all kept warm correctly.

Multi-shop

Sequential queue

Multiple shops? No problem — cache warmer processes them sequentially and spares the server from parallel load.

HTTP/2 pooling

Connection reuse

Instead of a new connection per page, HTTP/2 with connection pooling is used — significantly faster at scale.

Fallback

HTTP/1.1 when needed

If the target server cannot do HTTP/2 or has connection issues — automatic fallback to HTTP/1.1.

02
Live dashboard

What is happening — visible in real time.

admin.cache-warmer.de shows what is going on right now. Plus searchable history of the last 30 days per shop.

Live dashboard

What is running right now — and how far is it?

admin.cache-warmer.de provides a live dashboard showing in real time which shop is being warmed, how many pages are through, how much time remains. Including history of the last runs per shop.

Live counter

Pages per second

Real-time display of currently processed pages per second — directly comparable to the trend of past runs.

Per-shop stats

Success rate per shop

For every shop and customer group, the success rate is tracked — error pages are flagged in the history.

History

Last 30 days searchable

All runs of the past 30 days are searchable in the dashboard — including duration, errors and affected URLs.

03
Notifications

You hear about it only when it matters.

Per-shop email reports after every run — or Slack webhook. Threshold alerts dampen the noise.

Email report

Per shop, per customer group

After every run, a mail report goes to the configured addresses — including duration, error pages and performance trend.

Sendmail fallback

Works on any server

Mail delivery via PHP sendmail — no SMTP setup, no external services, no vendor lock-in.

Error list

Which URLs failed

If a page returns an error (404, 500, timeout) — the report shows the exact URL, status and response time.

Performance trend

Compared to last run

In the mail the average response time is compared with the last run — regressions are immediately visible.

Threshold alerts

Only when something is off

Optional: only send mail when the success rate drops below X % — no daily "all OK" mails.

Slack webhook

Also in team chat

Instead of mail (or in addition): Slack webhook for the whole team — same content, directly in the channel.

04
In numbers

What runs in the background.

Status of the current Cache Warmer setup at admin.cache-warmer.de.

PM2
process management
better-sqlite3
local state DB
HTTP/2
connection pooling
3010
port on Creoline s23409
Node 20
runtime via nodenv
05
Technical details

Pragmatically built.

Instead of large frameworks: lean Node worker, SQLite for state, PM2 for stability.

Stack

Node.js 20PM2better-sqlite3HTTP/2PHP sendmail

Architecture

Node worker per shop, shared queue via SQLite. better-sqlite3 replaces the earlier sql.js which ran into WASM memory crashes. PM2 secures auto-restart on crashes.

Hosting

Runs on Creoline server s23409 on port 3010, reachable at admin.cache-warmer.de. nodenv for Node version pinning, installable without root access.

Faster shop performance?

Set up Cache Warmer for your shop.

We set up Cache Warmer for your Shopware instance — including customer-group mapping, mail configuration and integration with your monitoring.