diff --git a/src/EventSubscriber/CacheControlOverrideSubscriber.php b/src/EventSubscriber/CacheControlOverrideSubscriber.php index 51d77ec..ea05c40 100644 --- a/src/EventSubscriber/CacheControlOverrideSubscriber.php +++ b/src/EventSubscriber/CacheControlOverrideSubscriber.php @@ -4,9 +4,11 @@ declare(strict_types=1); namespace Drupal\cache_control_override\EventSubscriber; +use DateTime; use Drupal\Core\Cache\CacheableResponseInterface; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; +use Exception; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\ResponseEvent; @@ -83,6 +85,13 @@ final class CacheControlOverrideSubscriber implements EventSubscriberInterface { } } $response->headers->set('Cache-Control', 'public, max-age=' . $maxAge); + + try { + // This is needed because page_cache uses this header to invalidate the page cache. + $response->setExpires(new DateTime('+' . $maxAge . ' seconds')); + } catch (Exception $e) { + // Could not set Expires header because max-age is invalid. + } } }