Вопрос по кешированию в CakePHP - PullRequest
3 голосов
/ 19 января 2010

Я планирую использовать кеширование в CakePHP. Мне интересно, что произойдет, если я обновлю данные в своих таблицах, будет ли CakePHP повторно кэшировать мои данные?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 19 января 2010

Не автоматически, нет.

Все, что вы кэшируете, не изменится, пока не истечет срок его действия или пока вы не обновите его.Это своего рода точка кэша.Хитрость заключается в том, чтобы определить правильный срок действия и / или удалить / обновить кэш, когда что-то изменится, и вы хотите немедленно отразить это.

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

Или, скажем, вы отображаете список сообщений Twitter, которые постоянно обновляются,но вы не можете обновлять их каждый раз, потому что Twitter накладывает ограничения на частоту обновления.Здесь вы будете использовать ограниченный по времени кэш, скажем, 10 минут, прежде чем проверять наличие новых сообщений.

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

Конкретная стратегия зависит от вашей ситуации.

2 голосов
/ 20 января 2010

В CakePHP существует несколько типов методов кэширования и механизмов кэширования: http://book.cakephp.org/view/156/Caching

Я использую движок файлового кэша по умолчанию.Вы можете настроить, как долго вы хотите кэшировать ваши данные в файле core.php.Например, я создал «короткий» кеш и «длинный» кеш, как это.

Cache::config('short', array(
    'engine' => 'File',
    'duration'=> '+1 hours',
    //'path' => CACHE,
    //'prefix' => 'cake_short_'
));

Cache::config('long', array(
    'engine' => 'File',
    'duration'=> '+1 week',
    'probability'=> 100,
    //'path' => CACHE . 'long' . DS,
));

Поэтому, когда вы хотите прочитать или записать данные в кэш, вы можете указать это имя конфигурации, чтобы узнать, как долго будет кэшироваться.Дополнительная информация: http://book.cakephp.org/view/767/Cache-write

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...