PHPackages                             etc-plugins/etc\_cache - 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. etc-plugins/etc\_cache

ActiveTextpattern-plugin[Caching](/categories/caching)

etc-plugins/etc\_cache
======================

Events-driven cache solution for Textpattern CMS.

0.2.8(7y ago)4452GPL-2.0PHP

Since Jul 10Pushed 4y ago3 watchersCompare

[ Source](https://github.com/etc-plugins/etc_cache)[ Packagist](https://packagist.org/packages/etc-plugins/etc_cache)[ Docs](https://github.com/etc-plugins/etc_cache)[ RSS](/packages/etc-plugins-etc-cache/feed)WikiDiscussions master Synced 6d ago

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

etc\_cache
==========

[](#etc_cache)

[Download](https://github.com/etc-plugins/etc_cache/releases) | [Packagist](https://packagist.org/packages/etc-plugins/etc_cache)

This Textpattern plugin provides an events-driven cache solution for Textpattern CMS.

Textpattern is fast, but when you have thousands of articles, processing the whole list (say, for creating a sitemap) can become time consuming. It’s a good idea (unless you publish an article every minute) to cache the processed result. Naturally, the cached block must be updated when content/an article is added/deleted. Most caching plugins trigger this update when the corresponding page is visited after the site update – this has, however, two inconveniences:

1. The first visitor has to wait while the expired block is processed and cached again
2. Every site modification, even irrelevant to the cached content, yields the cache update

That’s what etc\_cache is aimed to solve.

Installing
----------

[](#installing)

Using [Composer](https://getcomposer.org):

```
$ composer require etc-plugins/etc_cache:*
```

Or download the latest version of the plugin from [the GitHub project page](https://github.com/etc-plugins/etc_cache/releases), paste the code into the Textpattern Plugins administration panel, install and enable the plugin. Visit the [forum thread](https://forum.textpattern.io/viewtopic.php?id=47702) for more info or to report on the success or otherwise of the plugin.

Requirements
------------

[](#requirements)

- Textpattern 4.6.0 or newer.

Tags
----

[](#tags)

The basic usage is:

```

    ...heavy code...

```

#### Attributes

[](#attributes)

- `id="id name"`
    A unique identifier name for this cached item.
- `reset="value"`
    See reset information below.
- `time="value"`
    See time information below.

The code will be processed and cached until the site is updated. On site update, the plugin (if configured so) will ping the URL containing this block, triggering the cache refresh. Hence, the cache will always stay up to date, without penalizing site visitors.

To configure automatic cache updates, visit Extensions region Cache administration panel and edit reset field of each block. The possible values are:

- (empty): update client-side only when expired, regardless the site updates
- `1`: (default) update client-side if expired or the site was updated
- a list of events like `article_posted, article_saved` or `SQL LIKE` pattern like `article%`: update server-side when a matching event is fired.

The value `%` thus means ‘auto-update on each site update’, but will act as `1` client-side too.

You can be more specific with cache reset criteria. Say, if you need a block to be reset only if the article 3 is updated, set:

```
reset: article_saved
filter: {"article_saved":{"ID":3}}
```

You can also pass a `reset` attribute directly to etc\_cache:

```

    ...heavy code building an articles archive...

```

If needed, one can pass a `time` attribute to etc\_cache:

```

    ...daily code...

```

A positive (relative) value of time will indicate that the cache (even a fresh one) must be reset on site update.

An absolute value like `time=' +1 month'` will mean ‘cache it if not modified since one month’.

A negative value will not observe site updates, for example (`-900` seconds is equiavlent to 15 minutes):

…feed code… Authors/credits
---------------

[](#authorscredits)

Written by [Oleg Loukianov](http://www.iut-fbleau.fr/projet/etc/). Many thanks to [all additional contributors](https://github.com/etc-plugins/etc_cache/graphs/contributors).

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 61.1% 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 ~104 days

Total

5

Last Release

2816d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/641f63b56b03b23c9d984440ea75e7884ad1e642b2571dc0e6e2ad4ddb388312?d=identicon)[philwareham](/maintainers/philwareham)

---

Top Contributors

[![philwareham](https://avatars.githubusercontent.com/u/413665?v=4)](https://github.com/philwareham "philwareham (11 commits)")[![bloatware](https://avatars.githubusercontent.com/u/11578435?v=4)](https://github.com/bloatware "bloatware (6 commits)")[![petecooper](https://avatars.githubusercontent.com/u/226578?v=4)](https://github.com/petecooper "petecooper (1 commits)")

---

Tags

cachecachingperformancetextpatterntextpattern-pluginpluginperformancecachecachingtextpattern

### Embed Badge

![Health badge](/badges/etc-plugins-etc-cache/health.svg)

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

###  Alternatives

[putyourlightson/craft-blitz

Intelligent static page caching for creating lightning-fast sites.

153471.5k29](/packages/putyourlightson-craft-blitz)[silverstripe/staticpublishqueue

Static publishing queue to create static versions of pages for enhanced performance and security

45135.4k4](/packages/silverstripe-staticpublishqueue)[maartenstaa/laravel-41-route-caching

This package allows you to cache your routes definitions, thereby speeding up each request.

25371.9k](/packages/maartenstaa-laravel-41-route-caching)[alekseykorzun/memcached-wrapper-php

Optimized PHP 5 wrapper for Memcached extension that supports dog-piling, igbinary and local storage

2984.6k1](/packages/alekseykorzun-memcached-wrapper-php)[tractorcow/silverstripe-dynamiccache

FORK OF Silverstripe module for simple on the fly caching of dynamic content

3916.0k2](/packages/tractorcow-silverstripe-dynamiccache)

PHPackages © 2026

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