PHPackages                             smic/page-warmup - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Caching](/categories/caching)
4. /
5. smic/page-warmup

ActiveTypo3-cms-extension[Caching](/categories/caching)

smic/page-warmup
================

Page Cache Warmup

1.1.0(2mo ago)542.8k↓44.9%1[1 PRs](https://github.com/smichaelsen/typo3-page-warmup/pulls)GPL-3.0PHP

Since Jun 13Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/smichaelsen/typo3-page-warmup)[ Packagist](https://packagist.org/packages/smic/page-warmup)[ RSS](/packages/smic-page-warmup/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (2)Dependencies (6)Versions (15)Used By (0)

Page Warmup
===========

[](#page-warmup)

Cache warmer for your TYPO3 pages ☕️
------------------------------------

[](#cache-warmer-for-your-typo3-pages-️)

When content is edited in TYPO3, caches for certain pages are flushed automatically. Depending on your setup that can be dozens of pages with news plugins that are flushed when a news record is edited, for example.

This extension detects URLs of pages that have fallen out of the cache and provides a scheduler task to warm them up automatically, before your visitors have to do it.

Installation
------------

[](#installation)

`composer require smic/page-warmup`

Usage
-----

[](#usage)

After installing the extension, set up a new scheduler task with the class "Page Cache Warmup Queue Worker (page\_warmup)". The recommended (conservative) setup is:

- Type: Recurring
- Frequency: 120
- Don't Allow Parallel Execution
- Time limit in seconds: 60

That's it. Whenever the caching framework flushes page caches based on cache tags, the affected pages will automatically get warmed up again.

[![Scheduler Task](doc/scheduler.png?raw=true "Scheduler Task")](doc/scheduler.png?raw=true)

If the cache warmup is too slow, you can try a more aggressive setup like:

- Type: Recurring
- Frequency: 60
- Allow Parallel Execution
- Time limit in seconds: 240

That will result in ~ 4 simultaneous task processes, that are working on the queue. That means increased load on your system.

Under the hood
--------------

[](#under-the-hood)

In the TYPO3 caching framework entries are flushed by tags or all at once, and it gives you no feedback about what content / information has actually been flushed - that makes it hard to know what needs warming up. That's why this extension collects that information when a page is cached. It remembers the URLs and cache tags in a so called *warmup reservation*. When a cache tag is flushed, the extension can pull up all reservations matching that tag, and write the page URLs to a warmup queue.

### Detecting when a page is cached

[](#detecting-when-a-page-is-cached)

TYPO3 doesn't have a suitable hook or middleware to react to pages being cached, so this Extension provides a cache `VariableFrontendWithWarmupReservation` and registers it for the `pages` cache. It takes a look at all incoming cache entries and what *looks* like the cache entry for a page, will be written into a warmup reservation.

###  Health Score

50

—

FairBetter than 96% of packages

Maintenance87

Actively maintained with recent releases

Popularity33

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 83.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~10 days

Total

2

Last Release

67d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/886face3e57e668db2bf95d62325f423baf7e9d8949a9e4c84d3a0e6c3891920?d=identicon)[smichaelsen](/maintainers/smichaelsen)

---

Top Contributors

[![smichaelsen](https://avatars.githubusercontent.com/u/912435?v=4)](https://github.com/smichaelsen "smichaelsen (31 commits)")[![milicj](https://avatars.githubusercontent.com/u/87117603?v=4)](https://github.com/milicj "milicj (3 commits)")[![amirarends](https://avatars.githubusercontent.com/u/48568142?v=4)](https://github.com/amirarends "amirarends (2 commits)")[![seirerman](https://avatars.githubusercontent.com/u/1758587?v=4)](https://github.com/seirerman "seirerman (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/smic-page-warmup/health.svg)

```
[![Health](https://phpackages.com/badges/smic-page-warmup/health.svg)](https://phpackages.com/packages/smic-page-warmup)
```

###  Alternatives

[lochmueller/staticfilecache

Transparent static file cache solution using mod\_rewrite and mod\_expires. Increase performance for static pages by a factor of 230!!

1311.3M3](/packages/lochmueller-staticfilecache)[eliashaeussler/typo3-warming

Warming - Warms up Frontend caches based on an XML sitemap. Cache warmup can be triggered via TYPO3 backend or using a console command. Supports multiple languages and custom crawler implementations.

20229.9k](/packages/eliashaeussler-typo3-warming)[b13/distributed-locks

Adds a Redis Locking Strategy for TYPO3 frontend page generation, useful on distributed systems with NFS.

13248.2k](/packages/b13-distributed-locks)[bnf/nginx-cache

NGINX Cache Manager for TYPO3

243.7k](/packages/bnf-nginx-cache)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
