debug_cacheability_headers_split
Most webservers have a maximum header size limit. Most common limit is 8K per header, which may be configurable or not, as is (at the time of writing) the case of Apache2 with mod_proxy_fcgi.
For complex sites, the number of cache tags may be large, so when http.response.debug_cacheability_headers is enabled, the respective headers' size may exceed the server limit, resulting in server errors (WSOD, 502 Bad Gateway etc).
Related issues with more details and discussion:
- https://www.drupal.org/project/drupal/issues/2954339
- https://www.drupal.org/project/drupal/issues/2844620
The proposed approach is to split the large cacheability header(s) into multiple ones within the limit (e.g. 'X-Drupal-Cache-Tags', 'X-Drupal-Cache-Tags-1', 'X-Drupal-Cache-Tags-2' etc).
Features
When http.response.debug_cacheability_headers is enabled and if one of the cacheability headers exceeds the configured size limit, the header is automatically split into chunks.
Post-Installation
The default applicable configuration for the header limits is:
- 8192 (8KB) for the size limit per header
- 8000 (< 8KB) for the header chunk size when split
You may configure these at /admin/config/development/settings/cacheability.
Alternatively, you may override them via `settings.local.php` file as follows:
$config['debug_cacheability_headers_split.settings']['header_size_limit'] = 5120;
$config['debug_cacheability_headers_split.settings']['header_chunk_size'] = 5000;
Additional Requirements
None.
Similar projects
I do not believe that this is a core bug nor that it should be addressed by Drupal core. See detailed explanation here.