PHPackages                             pahy/ignitercf - 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. pahy/ignitercf

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

pahy/ignitercf
==============

Cloudflare Cache Purge (unofficial) - Automatically purge Cloudflare cache when content changes. Unofficial TYPO3 integration - not affiliated with Cloudflare, Inc.

v1.4.1(5mo ago)02GPL-2.0-or-laterPHPPHP ^8.1

Since Jan 16Pushed 5mo agoCompare

[ Source](https://github.com/pahy/ignitercf)[ Packagist](https://packagist.org/packages/pahy/ignitercf)[ RSS](/packages/pahy-ignitercf/feed)WikiDiscussions main Synced today

READMEChangelog (9)Dependencies (3)Versions (11)Used By (0)

IgniterCF - Cloudflare Cache Purge for TYPO3
============================================

[](#ignitercf---cloudflare-cache-purge-for-typo3)

Warning

This extension is work in progress and not yet production-ready. Use at your own risk.

Automatically purge Cloudflare cache when content changes in TYPO3 v12/v13.

> **[Deutsche Version / German Version](README.de.md)**

Getting Started
---------------

[](#getting-started)

### 1. Create Cloudflare API Token

[](#1-create-cloudflare-api-token)

1. Open the [Cloudflare Dashboard](https://dash.cloudflare.com/)
2. Go to **Profile** (top right) &gt; **API Tokens**
3. Click **Create Token**
4. Select **Custom Token** &gt; **Get started**
5. Configure:
    - **Token name:** `TYPO3 IgniterCF`
    - **Permissions:**
        - Zone &gt; Cache Purge &gt; Purge
    - **Zone Resources:**
        - Include &gt; Specific zone &gt; Select your zone(s)
6. Click **Continue to summary** &gt; **Create Token**
7. Copy the token (displayed only once)

### 2. Get Zone ID

[](#2-get-zone-id)

1. In Cloudflare Dashboard, select your domain
2. On the Overview page, find **Zone ID** on the right side
3. Copy this ID

### 3. Set Environment Variables

[](#3-set-environment-variables)

In `.env` (TYPO3 root):

```
# Zone ID (site-specific or global):
IGNITERCF_ZONE_MAIN=your-zone-id
IGNITERCF_ZONE_ID=fallback-zone-id  # Global fallback

# API Token (site-specific or global):
IGNITERCF_TOKEN_MAIN=your-cloudflare-api-token
IGNITERCF_API_TOKEN=fallback-token  # Global fallback

# Multi-domain example:
IGNITERCF_ZONE_MAIN=abc123def456
IGNITERCF_ZONE_SHOP=xyz789ghi012
IGNITERCF_TOKEN_MAIN=token-for-main-zone
IGNITERCF_TOKEN_SHOP=token-for-shop-zone
```

**Naming convention:** Site identifier becomes uppercase, hyphens become underscores:

- `main` → `IGNITERCF_ZONE_MAIN` / `IGNITERCF_TOKEN_MAIN`
- `my-shop` → `IGNITERCF_ZONE_MY_SHOP` / `IGNITERCF_TOKEN_MY_SHOP`

### 4. Configure Site (Alternative to Environment Variables)

[](#4-configure-site-alternative-to-environment-variables)

If not using environment variables for Zone ID, edit `config/sites/{site-identifier}/config.yaml`:

```
# Add at the end of the file:
cloudflare:
  zoneId: 'your-zone-id-here'  # Optional if IGNITERCF_ZONE_* is set
  enabled: true
```

**Multi-domain example (config.yaml):**

```
# config/sites/main/config.yaml
cloudflare:
  zoneId: 'abc123def456'
  enabled: true

# config/sites/shop/config.yaml
cloudflare:
  zoneId: 'xyz789ghi012'  # Different zone!
  enabled: true
```

> **Note:** Environment variables take precedence over config.yaml settings.

### 5. Extension Configuration (optional)

[](#5-extension-configuration-optional)

In TYPO3 Backend: **Settings &gt; Extension Configuration &gt; ignitercf**

SettingDefaultDescriptionEnable Cloudflare IntegrationYesGlobal kill switchPurge on Clear All CachesYesAlso purge CF on "Clear all caches"Auto-Purge on Content ChangeYesAutomatically purge on content changesEnable Cache-Control MiddlewareYesPrevent CF caching for BE usersDebug ModeNoVerbose logging### 6. Clear Cache

[](#6-clear-cache)

```
vendor/bin/typo3 cache:flush

# Or with DDEV:
ddev typo3 cache:flush
```

### 7. Test

[](#7-test)

#### Test 1: Auto-Purge on Content Change

[](#test-1-auto-purge-on-content-change)

1. Edit a content element in the backend
2. Save
3. Check log: `var/log/typo3_*.log````
    grep -i cloudflare var/log/typo3_*.log | tail -5
    ```
4. Expected output: `Cloudflare cache purged`

#### Test 2: Middleware (Cache-Control Header)

[](#test-2-middleware-cache-control-header)

```
# Without BE cookie (should NOT have no-store header):
curl -I https://your-domain.com/

# With BE cookie (should have no-store header):
curl -I -H "Cookie: be_typo_user=test" https://your-domain.com/
```

#### Test 3: Cache Dropdown

[](#test-3-cache-dropdown)

1. In backend, click the cache icon (top right)
2. "Clear Cloudflare Cache (All Zones)" should appear
3. Click it

#### Test 4: Context Menu

[](#test-4-context-menu)

1. Right-click on a page in the page tree
2. Select "Clear Cloudflare Cache"
3. Confirm

#### Test 5: Connection Test

[](#test-5-connection-test)

Test your Cloudflare configuration (token validity + zone access):

**Via CLI:**

```
# Test all sites:
vendor/bin/typo3 ignitercf:test:connection

# Test specific site:
vendor/bin/typo3 ignitercf:test:connection main
```

**Via Backend Module:**

1. Go to **System &gt; IgniterCF &gt; Configuration**
2. Click **Test** button next to a configured site
3. Results show token and zone status

---

Troubleshooting
---------------

[](#troubleshooting)

### Problem: "Cloudflare API Token is not configured"

[](#problem-cloudflare-api-token-is-not-configured)

**Solution:** Check environment variable:

```
# In DDEV:
ddev exec printenv | grep IGNITERCF

# Local:
printenv | grep IGNITERCF
```

Variable must match site identifier (uppercase, hyphens become underscores).

### Problem: Purge not working

[](#problem-purge-not-working)

**Check 1:** Is API token valid?

```
curl -X GET "https://api.cloudflare.com/client/v4/user/tokens/verify" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

**Check 2:** Is Zone ID correct?

- Cloudflare Dashboard &gt; Domain &gt; Overview &gt; Zone ID

**Check 3:** Check log

```
grep -i "cloudflare\|ignitercf" var/log/typo3_*.log
```

### Problem: Backend preview is cached

[](#problem-backend-preview-is-cached)

**Solution 1:** Is middleware active?

- Extension Configuration &gt; "Enable Cache-Control Middleware" enabled

**Solution 2:** Set up Cloudflare Cache Rule:

1. Cloudflare Dashboard &gt; Caching &gt; Cache Rules
2. New Rule: `Cookie contains "be_typo_user"` &gt; Cache: Bypass

### Enable Debug Mode

[](#enable-debug-mode)

```
// config/system/additional.php
$GLOBALS['TYPO3_CONF_VARS']['LOG']['Pahy']['Ignitercf']['writerConfiguration'] = [
    \TYPO3\CMS\Core\Log\LogLevel::DEBUG => [
        \TYPO3\CMS\Core\Log\Writer\FileWriter::class => [
            'logFileInfix' => 'ignitercf'
        ],
    ],
];
```

Log: `var/log/typo3_ignitercf_*.log`

---

Configuration Overview
----------------------

[](#configuration-overview)

WhatWhereExampleZone IDEnvironment Variable`IGNITERCF_ZONE_MAIN=abc123`Zone ID (fallback)Site config.yaml`cloudflare.zoneId: 'abc123'`API TokenEnvironment Variable`IGNITERCF_TOKEN_MAIN=...`Global SettingsExtension ConfigurationBackend &gt; SettingsEnable/disable siteSite config.yaml`cloudflare.enabled: false`**Lookup Order (Zone ID &amp; API Token):**

1. `IGNITERCF_ZONE_{SITE}` / `IGNITERCF_TOKEN_{SITE}` (site-specific)
2. `IGNITERCF_ZONE_ID` / `IGNITERCF_API_TOKEN` (global fallback)
3. Site config.yaml (legacy)

---

Features
--------

[](#features)

- Auto-purge on content changes (pages, tt\_content)
- Multi-site / multi-zone support
- "Clear all caches" integration
- Cache dropdown entry
- Context menu in page tree
- CLI commands for automated purges
- Scheduler tasks for scheduled purges
- Connection test (token + zone verification)
- Backend module with statistics and configuration status
- Middleware prevents CF caching for BE users
- Batch purge (max 30 URLs per request)
- TYPO3 v12 + v13 compatible

---

CLI Commands
------------

[](#cli-commands)

IgniterCF provides console commands for cache purging via command line.

### Purge All Zones

[](#purge-all-zones)

```
vendor/bin/typo3 ignitercf:purge:all

# With DDEV:
ddev typo3 ignitercf:purge:all
```

### Purge Specific Zone

[](#purge-specific-zone)

```
vendor/bin/typo3 ignitercf:purge:zone --site=main

# With DDEV:
ddev typo3 ignitercf:purge:zone --site=my-shop
```

### Purge Specific Page

[](#purge-specific-page)

```
# All languages:
vendor/bin/typo3 ignitercf:purge:page --page=123

# Specific language:
vendor/bin/typo3 ignitercf:purge:page --page=123 --language=1

# With DDEV:
ddev typo3 ignitercf:purge:page --page=123
```

### Test Connection

[](#test-connection)

Test Cloudflare API token and zone access for your sites:

```
# Test all configured sites:
vendor/bin/typo3 ignitercf:test:connection

# Test specific site:
vendor/bin/typo3 ignitercf:test:connection main

# With DDEV:
ddev typo3 ignitercf:test:connection
```

Output shows:

- Token validity (active/expired/invalid)
- Zone access (accessible/forbidden/not found)
- Response time

---

Scheduler Tasks
---------------

[](#scheduler-tasks)

IgniterCF provides scheduler tasks for automated or scheduled cache purges.

### Setting Up Tasks

[](#setting-up-tasks)

1. Go to **System &gt; Scheduler**
2. Click **Add task**
3. Select an IgniterCF task:
    - **IgniterCF: Purge All Zones** - Purges all configured zones
    - **IgniterCF: Purge Zone** - Purges a specific zone (select site)
    - **IgniterCF: Purge Page** - Purges a specific page (enter page UID)
4. Configure frequency (e.g., daily, hourly)
5. Save

### Task Configuration

[](#task-configuration)

TaskFieldsDescriptionPurge All Zones-Purges all configured zonesPurge ZoneSiteDropdown for site selectionPurge PagePage UID, Language UIDPage UID (required), Language UID (-1 = all)---

Support
-------

[](#support)

For issues: Enable debug mode and check logs (`var/log/typo3_ignitercf_*.log`).

---

**Author:** Patrick Hayder
**License:** GPL-2.0-or-later
**Not affiliated with:** Cloudflare, Inc.

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance72

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

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

Every ~0 days

Total

10

Last Release

163d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20403536?v=4)[Patrick](/maintainers/pahy)[@pahy](https://github.com/pahy)

---

Top Contributors

[![pahy](https://avatars.githubusercontent.com/u/20403536?v=4)](https://github.com/pahy "pahy (118 commits)")

---

Tags

cachecloudflarecdntypo3purge

### Embed Badge

![Health badge](/badges/pahy-ignitercf/health.svg)

```
[![Health](https://phpackages.com/badges/pahy-ignitercf/health.svg)](https://phpackages.com/packages/pahy-ignitercf)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k53](/packages/friendsoftypo3-content-blocks)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.1M8](/packages/netresearch-rte-ckeditor-image)[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.

22260.2k](/packages/eliashaeussler-typo3-warming)[b13/proxycachemanager

TYPO3 Extension that automatically flushes cached URLs within a proxy / CDN.

10109.4k](/packages/b13-proxycachemanager)[lochmueller/staticfilecache

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

1271.4M4](/packages/lochmueller-staticfilecache)

PHPackages © 2026

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