class CacheableResponseSubscriber in Pantheon Advanced Page Cache 8
Same name in this branch
- 8 src/EventSubscriber/CacheableResponseSubscriber.php \Drupal\pantheon_advanced_page_cache\EventSubscriber\CacheableResponseSubscriber
- 8 tests/modules/pantheon_advanced_page_cache_test/src/EventSubscriber/CacheableResponseSubscriber.php \Drupal\pantheon_advanced_page_cache_test\EventSubscriber\CacheableResponseSubscriber
Adds Surrogate-Key header to cacheable master responses.
Hierarchy
- class \Drupal\pantheon_advanced_page_cache_test\EventSubscriber\CacheableResponseSubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
Expanded class hierarchy of CacheableResponseSubscriber
1 string reference to 'CacheableResponseSubscriber'
- pantheon_advanced_page_cache_test.services.yml in tests/
modules/ pantheon_advanced_page_cache_test/ pantheon_advanced_page_cache_test.services.yml - tests/modules/pantheon_advanced_page_cache_test/pantheon_advanced_page_cache_test.services.yml
1 service uses CacheableResponseSubscriber
- pantheon_advanced_page_cache_test.cacheable_response_subscriber in tests/
modules/ pantheon_advanced_page_cache_test/ pantheon_advanced_page_cache_test.services.yml - Drupal\pantheon_advanced_page_cache_test\EventSubscriber\CacheableResponseSubscriber
File
- tests/
modules/ pantheon_advanced_page_cache_test/ src/ EventSubscriber/ CacheableResponseSubscriber.php, line 13
Namespace
Drupal\pantheon_advanced_page_cache_test\EventSubscriberView source
class CacheableResponseSubscriber implements EventSubscriberInterface {
/**
* Adds Surrogate-Key header to cacheable master responses.
*
* @param \Symfony\Component\HttpKernel\Event\FilterResponseEvent $event
* The event to process.
*/
public function onRespond(FilterResponseEvent $event) {
if (!$event
->isMasterRequest()) {
return;
}
$response = $event
->getResponse();
if ($response instanceof CacheableResponseInterface) {
$tags = $response
->getCacheableMetadata()
->getCacheTags();
// This is a contrived example of how custom code can be used
// to limit a giant list of tags.
// In this case, automated Behat tests generate nodes
// tagged in 100s of taxonomy terms each. Then when
// those nodes are rendered on a view like frontpage
// they result in too many total surrogate-keys being set.
if (in_array("config:views.view.frontpage", $tags)) {
$new_tags = [];
foreach ($tags as $tag) {
if (strpos($tag, "taxonomy_term:") === FALSE) {
$new_tags[] = $tag;
}
}
$response
->getCacheableMetadata()
->setCacheTags($new_tags);
}
}
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents() {
$events[KernelEvents::RESPONSE][] = [
'onRespond',
100,
];
return $events;
}
}
Members
Name![]() |
Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CacheableResponseSubscriber:: |
public static | function | Returns an array of event names this subscriber wants to listen to. | |
CacheableResponseSubscriber:: |
public | function | Adds Surrogate-Key header to cacheable master responses. |