MYSTERRIA3.0

Symfony: Кеширование запросов с GET параметрами

Суть проблемы в том, что есть некоторый раздел сайта, содержащий в себе фильтр для вывода прайса на машины. Все это естественно обернуто лэйаутом и содержит некоторое количество партиалов и компонентов, которым лучше бы быть закешированными.

Но при поиске в строке запроса появляются параметры после "?" и Симфони совершенно честно, как и написано в документации, при таком запросе кеширование не включает. И ладно бы страдал только вывод самого прайса, но все компоненты начинают лазать в БД и творить другие нпотребства.

Самый простой путь обойти эту проблему - это преобразовать параметры в путь. Т.е. имеем "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. Об этом расскажу позже.

Рубрики: Symfony

↑ Наверх


blog comments powered by Disqus

Контакты

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

© 2002-2019