контекстное кэширование шаблонов с компонентами - PullRequest
1 голос
/ 14 января 2011

У меня есть страница с компонентом меню.Меню помечает активный элемент другим классом CSS.

Теперь я хочу кэшировать каждую страницу элемента меню.Разные страницы приходят из одного и того же модуля / действия, разница только в идентификаторе (foo/bar?item=1).

Проблема в том, что меню кэшируется только один раз, но мне нужна версия кэша для каждого пункта меню.

Я только что попробовал параметр кэширования "contextual: true", но я думаю, что это не работает, потому что основной шаблон (barSuccess) всегда один и тот же.

У вас, ребята, есть идеи?как решить эту проблему?

1 Ответ

2 голосов
/ 15 января 2011

Вы можете принудительно установить ключ кэша, передав ключ sf_cache_key компоненту:

include_component('menu', 'main', array('sf_cache_key' => $sf_params->get('item')));

Таким образом, компонент будет кэшироваться для каждого значения элемента.

Другой способ - использовать разные наборы параметров:

include_component('menu', 'main', array('item' => $sf_params->get('item')));

Таким образом, компонент будет кэшироваться также для каждого значения элемента.

В первом решении вы форсируете ключ кеша. Это полезно, когда вам нужна пользовательская логика, чтобы решить, должен ли сгенерироваться кеш или нет.

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

...