Суть проблемы в том, что есть некоторый раздел сайта, содержащий в себе фильтр для вывода прайса на машины. Все это естественно обернуто лэйаутом и содержит некоторое количество партиалов и компонентов, которым лучше бы быть закешированными.
Но при поиске в строке запроса появляются параметры после "?" и Симфони совершенно честно, как и написано в документации, при таком запросе кеширование не включает. И ладно бы страдал только вывод самого прайса, но все компоненты начинают лазать в БД и творить другие нпотребства.
Самый простой путь обойти эту проблему - это преобразовать параметры в путь. Т.е. имеем "host.com/module/action?a=b&c=d", делаем "host.com/module/action/a/b/c/d". При таком преобразовании кеширование будет работать, только вот стандартные формы так себя вести не заставишь, значит придется писать обработку формы на JS.
<script language="JavaScript" type="text/javascript">
$(function(){
$('form#autoprice_searchform').submit(function(){
var serialized = $('form#autoprice_searchform :input[value]').serialize();
serialized = serialized.replace(/=/g, "/");
serialized = serialized.replace(/&/g, "/");
var href = $(this).attr('action')+"/"+serialized+"/search/1";
window.location.href=href;
return false;
});
});
</script>
Второй путь - установка собственного фильтра, очищающего массив $_GET. Об этом расскажу позже.