2011-03-06 1 views
2

Хорошее воскресенье! Я только начал играть с codeigniter, до сих пор все кажется настолько ясным (большие документы!), Но я пытаюсь понять, как работает $ this-> output-> cache().Codeigniter: управление кэшем на каждом выходе контроллера

Что я хочу сделать, это кэшировать только некоторые компоненты моего интерфейса. Например, в моем контроллере я загружаю представление для каждой части структуры: header_view, topnav_view, sidebar_view и home_view.

Используя $ this-> output-> cache (n) в моем контроллере, я получаю кеширование всей страницы. Что делать, если я хочу кэшировать всю страницу, кроме header_view?

ответ

1

CodeIgniter Reactor (2.0) имеет эту функцию built-in. Я предлагаю вам использовать последнюю версию CodeIgniter Reactor release.

CodeIgniter Reactor - это филиал сообщества небольшого проекта, который до недавнего времени игнорировался EllisLab. Он официально спонсируется «общинными стюардами», которые руководят разработкой и обеспечивают соблюдение стандартов кодирования. Он содержит много новых функций и намного дальше, чем предыдущие версии CodeIgniter (1.7.3). Тем не менее, она вырезана из одной ткани, так сказать, как ветка официального источника CI.

+0

@sholsinger: спасибо за ваш ответ! Я уже использую CI 2.0, загруженный с официального сайта, есть ли разница между кодовым именем Reactor? В любом случае, глядя на статью Грега Акера, я понимаю, что я не должен кэшировать весь вид, только массив с данными, которые я отправляю на просмотр ... правильно? – Luciano

+1

Исправить. Вы просто даете ему ключ, такой как '' all-users-db-result'' и значение '$ all_users_result', и он будет кэшировать его, используя любой драйвер кэширования, который вы настроили для его использования. Реактор - это просто ветка сообщества, в которой происходит большинство разработок. EllisLab объединит некоторые или все коды реакторов обратно в версию CodeIgniter. – sholsinger

+0

@ Лучано сказал, что вы можете кэшировать представление, если хотите. Но дело не в этом _expensive_ в терминах времени сервера. Вызов базы данных занимает гораздо больше времени, чем визуализация представления. – sholsinger

1

Использовать кэш Фила Стурджона library для кэширования как можно большего количества (или как мало) страницы.

Обычно я использую функции get/write/delete для кэширования не-пользовательских данных чтения баз данных (из нескольких вызовов модели) для моих страниц. Но рассмотрите функциональность модели/библиотеки и зависимости, если она работает в вашем случае