Pour faire cela sous Symfony, il est possible d'utiliser le système d'event listeners.
<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\FilterResponseEvent;
class CacheControlListener
{
private const ROUTES_NOT_TO_CACHE = ['dashboard'];
public function onKernelResponse(FilterResponseEvent $event)
{
if(in_array($event->getRequest()->attributes->get('_route'), self::ROUTES_NOT_TO_CACHE)) {
$headers = $event->getResponse()->headers;
$headers->set(
'Cache-Control',
'no-cache, no-store, max-age=0, must-revalidate'
);
}
}
}
App\EventListener\CacheControlListener:
tags:
- { name: kernel.event_listener, event: kernel.response }
3. Rajouter toutes les routes qu'on ne souhaite pas mettre en cache au niveau du array ROUTES_NOT_TO_CACHE présent au niveau de la classe CacheControlListener.
J'espère que ça aide :) !
Plus d'infos:
https://symfony.com/doc/current/event_dispatcher.html
https://symfony.com/doc/current/event_dispatcher/before_after_filters.html
Je trouve que sa aide beaucoup, vives les eventListener 👍