Debug Cacheability Headers Split
This module splits large cacheability headers into multiple smaller headers to prevent web server errors caused by exceeding maximum header size limits. It automatically divides headers if they exceed a configured size, ensuring cacheability information is still accessible.
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.