class TestResponseController
Same name in this branch
- 11.x core/modules/system/tests/modules/http_middleware_test/src/Controller/TestResponseController.php \Drupal\http_middleware_test\Controller\TestResponseController
Same name and namespace in other branches
- 10 core/modules/system/tests/modules/http_middleware_test/src/Controller/TestResponseController.php \Drupal\http_middleware_test\Controller\TestResponseController
Provides responses for testing debug cacheability headers in HTTP responses.
Apache has a response header line limit of 8190 bytes. Complex applications can have a lot of cache tags (and cache contexts, though less likely) that bubble to response and are sent as HTTP response headers when the container parameter http.response.debug_cacheability_headers is set to TRUE. To solve this, the debug cache headers are split into multiple lines with the same header name.
Nginx has a limit on the total HTTP response header size, including all lines, does not have limits per header line, so these responses will not cause server errors even if the lines are not split.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements \Drupal\Core\DependencyInjection\ContainerInjectionInterface uses \Drupal\Core\DependencyInjection\AutowireTrait, \Drupal\Core\Logger\LoggerChannelTrait, \Drupal\Core\Messenger\MessengerTrait, \Drupal\Core\Routing\RedirectDestinationTrait, \Drupal\Core\StringTranslation\StringTranslationTrait
- class \Drupal\http_response_debug_cacheability_headers_test\Controller\TestResponseController extends \Drupal\Core\Controller\ControllerBase
Expanded class hierarchy of TestResponseController
File
-
core/
modules/ system/ tests/ modules/ http_response_debug_cacheability_headers_test/ src/ Controller/ TestResponseController.php, line 23
Namespace
Drupal\http_response_debug_cacheability_headers_test\ControllerView source
class TestResponseController extends ControllerBase {
/**
* Provides a render array response that has a large number of cache contexts.
*
* @return array
* Render array.
*/
public function testCacheContextsHeaders() : array {
// Create multiple cache contexts that add up to more than 8k bytes.
for ($i = 0; $i < 700; $i++) {
$contexts[] = 'url.query_args:' . str_pad("{$i}", 4, '0', STR_PAD_LEFT);
}
$contexts_length = strlen(implode(' ', $contexts));
return [
'#markup' => 'This is a test of a list of cache contexts debug headers that exceed ' . $contexts_length . ' bytes in total.',
'#cache' => [
'contexts' => $contexts,
],
];
}
/**
* Provides a render array response that has a large number of cache tags.
*
* @return array
* Render array.
*/
public function testCacheTagsHeaders() : array {
// Create multiple cache tags that add up to more than 8k bytes.
for ($i = 0; $i < 800; $i++) {
$tags[] = 'cache-tag:' . str_pad("{$i}", 5, '0', STR_PAD_LEFT);
}
$tags_length = strlen(implode(' ', $tags));
return [
'#markup' => 'This is a test of a list of cache tags debug headers that exceed ' . $tags_length . ' bytes in total.',
'#cache' => [
'tags' => $tags,
],
];
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overrides |
|---|---|---|---|---|
| AutowiredInstanceTrait::createInstanceAutowired | public static | function | Instantiates a new instance of the implementing class using autowiring. | |
| AutowiredInstanceTrait::getAutowireArguments | private static | function | Resolves arguments for a method using autowiring. | |
| AutowireTrait::create | public static | function | Instantiates a new instance of the implementing class using autowiring. | 135 |
| ControllerBase::$configFactory | protected | property | The configuration factory. | |
| ControllerBase::$currentUser | protected | property | The current user service. | 2 |
| ControllerBase::$entityFormBuilder | protected | property | The entity form builder. | |
| ControllerBase::$entityTypeManager | protected | property | The entity type manager. | |
| ControllerBase::$formBuilder | protected | property | The form builder. | 1 |
| ControllerBase::$keyValue | protected | property | The key-value storage. | 1 |
| ControllerBase::$languageManager | protected | property | The language manager. | 1 |
| ControllerBase::$moduleHandler | protected | property | The module handler. | 1 |
| ControllerBase::$stateService | protected | property | The state service. | |
| ControllerBase::cache | protected | function | Returns the requested cache bin. | |
| ControllerBase::config | protected | function | Retrieves a configuration object. | |
| ControllerBase::container | private | function | Returns the service container. | |
| ControllerBase::currentUser | protected | function | Returns the current user. | 2 |
| ControllerBase::entityFormBuilder | protected | function | Retrieves the entity form builder. | |
| ControllerBase::entityTypeManager | protected | function | Retrieves the entity type manager. | |
| ControllerBase::formBuilder | protected | function | Returns the form builder service. | 1 |
| ControllerBase::keyValue | protected | function | Returns a key/value storage collection. | 1 |
| ControllerBase::languageManager | protected | function | Returns the language manager service. | 1 |
| ControllerBase::moduleHandler | protected | function | Returns the module handler. | 1 |
| ControllerBase::redirect | protected | function | Returns a redirect response object for the specified route. | |
| ControllerBase::state | protected | function | Returns the state storage service. | |
| LoggerChannelTrait::$loggerFactory | protected | property | The logger channel factory service. | |
| LoggerChannelTrait::getLogger | protected | function | Gets the logger for a specific channel. | |
| LoggerChannelTrait::setLoggerFactory | public | function | Injects the logger channel factory. | |
| MessengerTrait::$messenger | protected | property | The messenger. | 28 |
| MessengerTrait::messenger | public | function | Gets the messenger. | 28 |
| MessengerTrait::setMessenger | public | function | Sets the messenger. | |
| RedirectDestinationTrait::$redirectDestination | protected | property | The redirect destination service. | 2 |
| RedirectDestinationTrait::getDestinationArray | protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
| RedirectDestinationTrait::getRedirectDestination | protected | function | Returns the redirect destination service. | |
| RedirectDestinationTrait::setRedirectDestination | public | function | Sets the redirect destination service. | |
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 |
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | |
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 |
| StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | 1 |
| TestResponseController::testCacheContextsHeaders | public | function | Provides a render array response that has a large number of cache contexts. | |
| TestResponseController::testCacheTagsHeaders | public | function | Provides a render array response that has a large number of cache tags. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.