namespace Symfony\Component\HttpKernel\EventListener;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
+use Symfony\Component\HttpKernel\HttpCache\HttpCache;
use Symfony\Component\HttpKernel\HttpCache\SurrogateInterface;
use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
{
private $surrogate;
- /**
- * Constructor.
- *
- * @param SurrogateInterface $surrogate An SurrogateInterface instance
- */
public function __construct(SurrogateInterface $surrogate = null)
{
$this->surrogate = $surrogate;
/**
* Filters the Response.
- *
- * @param FilterResponseEvent $event A FilterResponseEvent instance
*/
public function onKernelResponse(FilterResponseEvent $event)
{
- if (!$event->isMasterRequest() || null === $this->surrogate) {
+ if (!$event->isMasterRequest()) {
+ return;
+ }
+
+ $kernel = $event->getKernel();
+ $surrogate = $this->surrogate;
+ if ($kernel instanceof HttpCache) {
+ $surrogate = $kernel->getSurrogate();
+ if (null !== $this->surrogate && $this->surrogate->getName() !== $surrogate->getName()) {
+ $surrogate = $this->surrogate;
+ }
+ }
+
+ if (null === $surrogate) {
return;
}
- $this->surrogate->addSurrogateControl($event->getResponse());
+ $surrogate->addSurrogateControl($event->getResponse());
}
public static function getSubscribedEvents()