---
title: "Feature: #90234 - Introduce CacheHashConfiguration and matching indicators"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-90234"
source: "Changelog/10.3/Feature-90234-IntroduceCacheHashConfigurationAndMatchingIndicators.rst"
modified: "2026-09-14T09:47:36+00:00"
---

# Feature: #90234 - Introduce CacheHashConfiguration and matching indicators

See [forge#90234](https://forge.typo3.org/issues/90234)

## Description

Settings for `$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash']` are modelled
in class `CacheHashConfiguration` which takes care of validating configuration.
It also determines whether corresponding aspects apply to a given URL
parameter.

Besides exact matches (*equals*) it is possible to apply partial matches at
the beginning of a parameter (*startsWith*) or inline occurrences (*contains*).

URL parameter names are prefixed with the following indicators:

-   `=` (*equals*): exact match, default behavior if not given
-   `^` (*startsWith*): matching the beginning of a parameter name
-   `~` (*contains*): matching any inline occurrence in a parameter name

These indicators can be used for all previously existing sub-properties
`cachedParametersWhiteList`, `excludedParameters`, `excludedParametersIfEmpty`
and `requireCacheHashPresenceParameters`.

### Example (excerpt of `LocalConfiguration.php`)

```php
$GLOBALS['TYPO3_CONF_VARS']['FE']['cacheHash'] = [
  'excludedParameters' => [
    'utm_source',
    'utm_medium',
    '^utm_', // making previous two obsolete
  ],
  'excludedParametersIfEmpty' => [
    '^tx_my_plugin[aspects]',
    'tx_my_plugin[filter]',
  ],
];
```

## Impact

Configuration related to *cHash* URL parameter supports partial matches which
overcomes the previous necessity to explicitly state all parameter names to be
excluded.

For instance instead of having exclude items like

```php
'excludedParameters' => [
   'tx_my[data][uid]',
   'tx_my[data][category]',
   'tx_my[data][order]',
   'tx_my[data][origin]',
   ...
],
```

partial matches allow to simplify the configuration and consider all items having
`tx_my[data]` (or `tx_my[data][` to be more specific) as prefix like

```php
'excludedParameters' => [
   '^tx_my[data][',
   ...
],
```

The present configuration for the `cHash` section is still supported - there is
no syntactical requirement to adjust those changes.
