Как полностью отключить кеширование в Cakephp? - PullRequest
20 голосов
/ 19 апреля 2010

Итак, я открыл шлюзы кеша в своем приложении Cakephp и теперь я хочу закрыть их ...

Я сделал почти все, что мог: удалил все файлы в папке tmp (но не в папках), включил Cache.disable в файле core.php в моем приложении, попытался очистить кеш от в некоторых контроллерах с clearCache () и Cache :: clear () (но я подозреваю, что это не работает, потому что он не загружает контроллер - из-за кэширования).

Я довольно эффективно остановил процесс разработки только потому, что кэширование не отключается. У кого-нибудь есть идеи, которые я мог бы попробовать? Я начинаю думать, что это может быть в браузере или, возможно, в моем хостинг-сервисе, но, вероятно, просто Cakephp связывается со мной.

Ответы [ 5 ]

13 голосов
/ 19 апреля 2010

Чтобы исключить кеширование браузера как основную причину, вы можете попробовать добавить следующие строки:

header('Cache-Control: no-store, private, no-cache, must-revalidate');                  // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);    // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                                       // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Pragma: no-cache');

Комбинация всех этих HTTP-заголовков, разрушающих кеш, по моему опыту, работала во всех браузерах и обошла некоторые очень агрессивные кеширующие прокси.

4 голосов
/ 06 декабря 2012

Вы можете посмотреть код вашего контроллера для кэширования некоторых элементов и установить для них значение false. Это относится к app_controller.php или Controller / AppController.php в зависимости от используемой вами версии Cake.

Controller::cacheAction = false

echo $this->element('latest_comments', array(), array('cache' => false));

Вы можете попробовать добавить Controller::disableCache(); в действие вашего контроллера.

3 голосов
/ 27 января 2011

В некотором роде (плюс этот поток старый, но да ладно), но у меня была похожая проблема: я не мог заставить IE выйти из кэширования ajax-запросов (используя jQuery). После долгих страданий и головной боли все просто:

$.ajaxSetup({cache:false});

сделал свое дело. Должен любить IE ...

2 голосов
/ 27 апреля 2010

Однажды у меня возникла проблема с кэшированием модели, и я больше не отображал схему таблицы.

Мне пришлось обновить мой /config/core.php и установить «debug: 2» Это отключило кеширование моих моделей и исправило мои проблемы.

0 голосов
/ 22 апреля 2018

https://book.cakephp.org/3.0/en/core-libraries/caching.html#globally-enable-or-disable-cache

статический Cake \ Cache \ Cache :: disable¶ Возможно, вам придется отключить все операции чтения и записи в кэш при попытке выяснить проблемы, связанные с истечением срока действия кэша. Вы можете сделать это, используя enable () и disable ():

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