smic / page-warmup
Page Cache Warmup
Installs: 31 656
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 2
Forks: 1
Open Issues: 1
Type:typo3-cms-extension
Requires
- typo3/cms-core: ^10.4 || ^11.5
This package is auto-updated.
Last update: 2024-10-25 07:59:41 UTC
README
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
composer require smic/page-warmup
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.
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
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
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.