# Shopware cache warmer: warm up the cache automatically

> Scheduled warming of all Shopware caches. Multi-shop, customer group, HTTP/2 pooling, mail notifications.

Quelle / Source: https://stoneandwater.online/en/cache-warmer.html

# Shopware cache warmer: Cache Warmer.

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

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.

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.

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.

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](https://www.creoline.com/ref/tYq4UkumEqLtMCi3PpwEJo9JspG66udf) s23409

Node 20
runtime via nodenv

Technical details

## Pragmatically *built*.

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

### Stack

Node.js 20 PM2 better-sqlite3 HTTP/2 PHP 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](https://www.creoline.com/ref/tYq4UkumEqLtMCi3PpwEJo9JspG66udf) server s23409 on port 3010, reachable at admin.cache-warmer.de. nodenv for Node version pinning, installable without root access.

### Product page

Full service description, documentation and booking form at:
[**shopware-cachewarmer.de →**](https://shopware-cachewarmer.de/)

FAQ

## Cache Warmer FAQ

#### What does a cache warmer do in Shopware?

It requests the pages of your shop on a schedule before real visitors arrive. Product pages, listings and CMS pages are already cached, so the first visitor does not wait for a freshly rendered page.

#### When is the cache warmed up?

Runs are tied to a cron job, for example at night or early in the morning. A run also makes sense after clearing the cache, after a deployment or after a larger import.

#### Are customer groups and multiple shops covered?

Yes. Each customer group gets its own run, so B2B prices are cached too. Multiple shops are processed one after another through a shared queue.

#### Will I know when pages fail?

After every run an email report lists the pages that returned an error such as 404, 500 or a timeout. Optionally the report goes to a Slack webhook, or is only sent when the success rate drops below a threshold.

#### Where do I get the cache warmer?

The cache warmer is a service with its own product page at shopware-cachewarmer.de, including prices and configuration options. For the setup you can contact us directly.

Faster shop performance?

## Cache Warmer service *at shopware-cachewarmer.de*.

Full service description with pricing, configuration options and booking form on the product page. On request we handle the complete setup - including customer-group mapping, mail configuration and integration with your monitoring.
[Go to shopware-cachewarmer.de](https://shopware-cachewarmer.de/)[Request setup](https://stoneandwater.online/en/contact.html)
