MYSTERRIA3.0

Symfony: Как кэшировать запросы с GET параметрами

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

Рубрики: Symfony

↑ Наверх


blog comments powered by Disqus

Контакты

Igor Zinkovsky aka TLoD,Snake. Писать на электропочту, стучаться в аську 302380533, искать в Санкт-Петербурге.

© 2002-2019