core/core.services.yml | 32 ++++++++++++++++++-- core/lib/Drupal/Core/Cache/CookiesCacheContext.php | 34 ++++++++++++++++++++++ core/lib/Drupal/Core/Cache/FormatCacheContext.php | 29 ++++++++++++++++++ core/lib/Drupal/Core/Cache/HeadersCacheContext.php | 34 ++++++++++++++++++++++ core/lib/Drupal/Core/Cache/IpCacheContext.php | 29 ++++++++++++++++++ .../Drupal/Core/Cache/RouteNameCacheContext.php | 28 ++++++++++++++++++ 6 files changed, 183 insertions(+), 3 deletions(-) diff --git a/core/core.services.yml b/core/core.services.yml index ee0d125..8e06c41 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -6,6 +6,22 @@ parameters: factory.keyvalue.expirable: default: keyvalue.expirable.database services: + # Cache contexts. + cache_context.ip: + class: Drupal\Core\Cache\IpCacheContext + arguments: ['@request_stack'] + tags: + - { name: cache.context } + cache_context.headers: + class: Drupal\Core\Cache\HeadersCacheContext + arguments: ['@request_stack'] + tags: + - { name: cache.context } + cache_context.cookies: + class: Drupal\Core\Cache\CookiesCacheContext + arguments: ['@request_stack'] + tags: + - { name: cache.context } cache_context.url: class: Drupal\Core\Cache\UrlCacheContext arguments: ['@request_stack'] @@ -25,18 +41,28 @@ services: class: Drupal\Core\Cache\PagerCacheContext arguments: ['@request_stack'] tags: - - { name: cache.context} + - { name: cache.context } cache_context.url.route: class: Drupal\Core\Cache\RouteCacheContext arguments: ['@current_route_match'] tags: - - { name: cache.context} + - { name: cache.context } + cache_context.url.route.name: + class: Drupal\Core\Cache\RouteNameCacheContext + arguments: ['@current_route_match'] + tags: + - { name: cache.context } + cache_context.url.route.format: + class: Drupal\Core\Cache\FormatCacheContext + arguments: ['@request_stack'] + tags: + - { name: cache.context } cache_context.url.route.menu_active_trail: class: Drupal\Core\Cache\MenuActiveTrailCacheContext calls: - [setContainer, ['@service_container']] tags: - - { name: cache.context} + - { name: cache.context } cache_factory: class: Drupal\Core\Cache\CacheFactory diff --git a/core/lib/Drupal/Core/Cache/CookiesCacheContext.php b/core/lib/Drupal/Core/Cache/CookiesCacheContext.php new file mode 100644 index 0000000..6760b1b --- /dev/null +++ b/core/lib/Drupal/Core/Cache/CookiesCacheContext.php @@ -0,0 +1,34 @@ +requestStack->getCurrentRequest()->cookies->all(); + } + else { + return $this->requestStack->getCurrentRequest()->cookies->get($cookie); + } + } + +} diff --git a/core/lib/Drupal/Core/Cache/FormatCacheContext.php b/core/lib/Drupal/Core/Cache/FormatCacheContext.php new file mode 100644 index 0000000..2dbf8ec --- /dev/null +++ b/core/lib/Drupal/Core/Cache/FormatCacheContext.php @@ -0,0 +1,29 @@ +requestStack->getCurrentRequest()->getRequestFormat(); + } + +} diff --git a/core/lib/Drupal/Core/Cache/HeadersCacheContext.php b/core/lib/Drupal/Core/Cache/HeadersCacheContext.php new file mode 100644 index 0000000..e2b8932 --- /dev/null +++ b/core/lib/Drupal/Core/Cache/HeadersCacheContext.php @@ -0,0 +1,34 @@ +requestStack->getCurrentRequest()->headers->all(); + } + else { + return $this->requestStack->getCurrentRequest()->headers->get($header); + } + } + +} diff --git a/core/lib/Drupal/Core/Cache/IpCacheContext.php b/core/lib/Drupal/Core/Cache/IpCacheContext.php new file mode 100644 index 0000000..c0c2e08 --- /dev/null +++ b/core/lib/Drupal/Core/Cache/IpCacheContext.php @@ -0,0 +1,29 @@ +requestStack->getCurrentRequest()->getClientIp(); + } + +} diff --git a/core/lib/Drupal/Core/Cache/RouteNameCacheContext.php b/core/lib/Drupal/Core/Cache/RouteNameCacheContext.php new file mode 100644 index 0000000..7a429d4 --- /dev/null +++ b/core/lib/Drupal/Core/Cache/RouteNameCacheContext.php @@ -0,0 +1,28 @@ +routeMatch->getRouteName(); + } + +}