diff --git a/src/EventSubscriber/CacheControlOverrideSubscriber.php b/src/EventSubscriber/CacheControlOverrideSubscriber.php index 1279a92..2a18c79 100644 --- a/src/EventSubscriber/CacheControlOverrideSubscriber.php +++ b/src/EventSubscriber/CacheControlOverrideSubscriber.php @@ -2,8 +2,10 @@ namespace Drupal\cache_control_override\EventSubscriber; +use DateTime; use Drupal\Core\Cache\Cache; use Drupal\Core\Cache\CacheableResponseInterface; +use Exception; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -39,6 +41,13 @@ class CacheControlOverrideSubscriber implements EventSubscriberInterface { // We treat permanent cache max-age as default therefore we don't override the max-age. if ($max_age != Cache::PERMANENT) { $response->headers->set('Cache-Control', 'public, max-age=' . $max_age); + + try { + // This is needed because page_cache uses this header to invalidate the page cache. + $response->setExpires(new DateTime('+' . $max_age . ' seconds')); + } catch (Exception $e) { + // Could not set Expires header because max-age is invalid. + } } }