 .../src/EventSubscriber/DynamicPageCacheSubscriber.php               | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php b/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
index 8316470..0f9b439 100644
--- a/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
+++ b/core/modules/dynamic_page_cache/src/EventSubscriber/DynamicPageCacheSubscriber.php
@@ -156,6 +156,7 @@ public function onResponse(FilterResponseEvent $event) {
     // access and modify the cacheability metadata associated with the
     // response.)
     if (!$response instanceof CacheableResponseInterface) {
+      $response->headers->set(self::HEADER, 'UNCACHEABLE (no cacheability)');
       return;
     }
 
@@ -167,7 +168,7 @@ public function onResponse(FilterResponseEvent $event) {
     // There's no work left to be done if this is an uncacheable response.
     if (!$this->shouldCacheResponse($response)) {
       // The response is uncacheable, mark it as such.
-      $response->headers->set(self::HEADER, 'UNCACHEABLE');
+      $response->headers->set(self::HEADER, 'UNCACHEABLE (poor cacheability)');
       return;
     }
 
@@ -184,6 +185,7 @@ public function onResponse(FilterResponseEvent $event) {
     // @see \Drupal\Core\EventSubscriber\DefaultExceptionHtmlSubscriber::on403()
     $request = $event->getRequest();
     if (!isset($this->requestPolicyResults[$request])) {
+      $response->headers->set(self::HEADER, 'UNCACHEABLE (subrequest)');
       return;
     }
 
@@ -191,6 +193,7 @@ public function onResponse(FilterResponseEvent $event) {
     // policies are not met.
     // @see onRouteMatch()
     if ($this->requestPolicyResults[$request] === RequestPolicyInterface::DENY || $this->responsePolicy->check($response, $request) === ResponsePolicyInterface::DENY) {
+      $response->headers->set(self::HEADER, 'UNCACHEABLE (policy)');
       return;
     }
 
