PHPackages                             andersundsehr/cache-automation - 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. andersundsehr/cache-automation

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

andersundsehr/cache-automation
==============================

Automatically Adds Cache Tags and cache lifetime

0.0.1(2y ago)02GPL-2.0-or-laterPHPPHP ~8.2.0 || ~8.3.0

Since Mar 21Pushed 2y ago1 watchersCompare

[ Source](https://github.com/andersundsehr/cache-automation)[ Packagist](https://packagist.org/packages/andersundsehr/cache-automation)[ RSS](/packages/andersundsehr-cache-automation/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (12)Versions (2)Used By (0)

Cache Automation (auto cache tags + starttime and endtime)
==========================================================

[](#cache-automation-auto-cache-tags--starttime-and-endtime)

TYPO3 has a good cache system, that is capable of removing the right caches at the right time. But it needs your help to do so.

usually you have to add Cache Tags to your code, to tell TYPO3 which tables were used in your code.

> With this extension this Process is automated.

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

[](#installation)

```
composer require andersundsehr/cache-automation
```

Currently only Compatible with TYPO3 11 LTS (doctrine dbal 2.13)

How this works in detail
------------------------

[](#how-this-works-in-detail)

This extension hooks into the TYPO3 QueryBuilder.
It manipulates the Query to get all the necessary information, to provide the best cache lifetime. The `starttime` condition is removed in the SQL Query, so we can get the lowest `starttime` that is still in the future. The `endtime` is also used for the cache lifetime. It is capable of handling complex queries, with multiple joins.

It also hooks into the Result Object, to intercept the result and add the Cache Tags to the Page Cache. The `DocrineResult` filters out the rows that have a starttime in the future, so the rows returned are the same as if the starttime condition was still in the query.

conditional fields
------------------

[](#conditional-fields)

A conditional field is a field that is used in a WHERE condition of any Query.
It can be useful to add the field to the cache tag, so the cache is cleared if the field changes.

### TODO:

[](#todo)

- read only mode for Metrics (aus vector extraction in eine extra Extension)
    - VECTOR \\AUS\\AusProject\\Utility\\MetricsCollectorUtility::collect
    - VECTOR \\AUS\\AusProject\\Command\\MetricsCommand::execute
- add cache clear for file operations (replace file, delete file ...) sys\_file\_
- SubQueries: at least we could create the `-` cache tags for the subQuery.
- Option for: disable `-` handling
- Option for: disable remove of `StartTimeRestriction`
- add github actions
- add TYPO3 12 and 13 compatibility

Limitations of that Process
---------------------------

[](#limitations-of-that-process)

- Only works with the `\TYPO3\CMS\Core\Database\Query\QueryBuilder` (not with `getConcreteQueryBuilder()` `\Doctrine\DBAL\Query\QueryBuilder`)
    - indirectly it works with Extbases `\TYPO3\CMS\Extbase\Persistence\Generic\Query` because that uses the `\TYPO3\CMS\Core\Database\Query\QueryBuilder`.
    - indirectly it works with `Doctrine\DBAL\Query\QueryBuilder` because that uses the `\TYPO3\CMS\Core\Database\Query\QueryBuilder`.
- it does not work if you let out the uid of the table. (eg. `SELECT COUNT(*) FROM ...`) (`Connection->count()` uses that.)
- it does not know if the row you get from the database is really necessary for the cache tag.
- it creates way more cache tags than the Core, that could lead to overflows in the Database.
- it does not work with other Caches than the Page Cache.
    - maybe this can be added in the future, if there is a need for it.

between the Normal TYPO3 Cache handling and the Clear all caches on every Change,
it Tries to be as close as possible at the Point there it always clears enough caches, but as little as possible.

with ♥️ from anders und sehr GmbH
=================================

[](#with-️-from-anders-und-sehr-gmbh)

> If something did not work 😮
> or you appreciate this Extension 🥰 let us know.

> We are hiring

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

780d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/471387?v=4)[Matthias Vogel](/maintainers/Kanti)[@Kanti](https://github.com/Kanti)

---

Top Contributors

[![Kanti](https://avatars.githubusercontent.com/u/471387?v=4)](https://github.com/Kanti "Kanti (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/andersundsehr-cache-automation/health.svg)

```
[![Health](https://phpackages.com/badges/andersundsehr-cache-automation/health.svg)](https://phpackages.com/packages/andersundsehr-cache-automation)
```

###  Alternatives

[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)[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1481.0k](/packages/eliashaeussler-typo3-form-consent)[leuchtfeuer/locate

Locate - The users country, preferred language and other facts will be detected. Depending on configurable rules the user can be redirected to other languages or pages. Locate also provides geo blocking for configurable pages in configurable countries.

1182.8k](/packages/leuchtfeuer-locate)[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)
