Если углубиться в код кэш фильтра, то можно обнаружить то, что Symfony для вынесения решения о возможности кэшировать результат запроса проверяет системные переменные PHP $_GET и $_POST. Следственно, мы можем создать свой собственный фильтр, где мы будем чистить массив $_GET и поставить его в filters.yml до симфонивского кэш фильтра.
Код нашего фильтра будет выглядеть примерно так:
class CacheControlFilter extends sfFilter { public function execute($filterChain) { $request = $this -> getContext() -> getRequest(); $user = $this -> getContext() -> getUser(); // ...processing... $preserve = array('direct', '_sf_ignore_cache'); foreach($_GET as $k=>$v){ if( !in_array($k, $preserve) ) unset( $_GET[$k] ); } $filterChain -> execute(); } }
Как видите, я оставил два параметра, которые не вычищаются из $_GET. "_sf_ignore_cache" - это стандартный параметр Symfony для отключения кэширования из debug-панели, "direct" - это моя более запоминающаяся его версия, которую использую я сам и редактора, когда какую-то страницу сайта надо узреть без кэша.