Если углубиться в код кэш фильтра, то можно обнаружить то, что 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" - это моя более запоминающаяся его версия, которую использую я сам и редактора, когда какую-то страницу сайта надо узреть без кэша.