Я хотел бы использовать кеширование на уровне модели в текущем веб-приложении, над которым я работаю.
Мне удобно кэшировать общие вещи, такие как "последние новости" или другие не связанные с пользователем вещи, подобные этому, Я ищу какое-то руководство по кешированию запросов, которые основаны на пользовательских данных.
Например, список комментариев пользователя.Для запроса потребуется идентификатор пользователя, а результат будет относиться только к этому пользователю, поэтому как мне его кэшировать?
Что еще более важно, простая очистка всего кэша при обновлении комментария кажется очень неэффективной, этобыло бы неплохо получить несколько советов о том, как очистить специфичные для пользователя ключи кэша.
Пример
function getEntryByInventory($id,$company_id) {
$getEntryByInventory = Cache::read('Entry.getEntryByInventory.'.$id.'.'.$company_id);
if($getEntryByInventory !==false) {
return $getEntryByInventory;
} else {
$getEntryByInventory = $this->find('first' , array(
'conditions' => array(
'Entry.id' => $id,
'Inventory.company_id' => $company_id
)
));
Cache::write('Entry.getEntryByInventory.'.$id.'.'.$company_id , $getEntryByInventory);
return $getEntryByInventory;
}
}
// How would I clear the above cache without knowing the company id?
function beforeSave() {
Cache::delete('????');
return true;
}
Я могу сохранить результат этого запроса в кеше и сделать его конкретным, добавив$ company_id для ключа кеша, поэтому чтение и запись в кеш - это нормально.
Но в этом случае, если мне нужно будет удалить этот ключ из кеша, мне потребуется $ company_id.
Мой вопрос в том, правильно ли я поступлю, и если нет, то я могу получить несколько указателей, пожалуйста!
Заранее спасибо.