Почему Cache::clear() не очищает мой (представленный) кеш? (ТортPHP)

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

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

Даже вызов предложенного метода Cache::clear() вручную ничего не дает. Как очистить кеш представления в Cake?

(Начиная с версии 1.2.2.8120. Глядя на коммиты репозитория, даже .8256 должна иметь эту проблему.)


person deceze♦    schedule 26.07.2009    source источник
comment
возможно, из-за этого меня мучило кэширование на стороне клиента в моих запеченных представлениях индекса. firefox, safari, IE были все проблемы, chrome не было. я исправил это, вызвав $this-›disableCache() в своих контроллерах.   -  person Randy L    schedule 03.07.2010


Ответы (2)


Используйте clearCache(), возможно, автоматически в обратном вызове модели afterSave:

// model file:
function afterSave($created) {
    clearCache();
}

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

person Community    schedule 26.07.2009
comment
разве вы не должны также использовать parent::afterSave(false);, как предложил Азиз в другом ответе? - person caesarsol; 19.09.2013

использовать Cache::clearCache(); или удалите именно тот файл, который вы не хотите удалять

function afterSave($created)
{
  parent::afterSave(false);
  Cache::delete('left_menu_eng');
}
person Aziz    schedule 20.01.2010
comment
что значит удалить именно тот файл, который вы не хотите удалять? - person caesarsol; 19.09.2013