CakePHP 3: не уверен, почему Cache::read() не работает
У меня есть объект SettingsSiteTable со следующим методом для чтения настроек в базе данных и сохранения результатов в кеше.
// GET ALL CONFIG SETTINGS
function getConfigs(){
if(($settings_site = Cache::read($this->key)) === false) {
$settings_site = $this->find('list', [
'keyField' => 'key',
'valueField' => 'value'
])->toArray();
Cache::write($this->key, $settings_site, 'settings');
}
return $settings_site;
} // END GET CONFIGS FUNCTION
Клавиша $this-> - "SettingsSite", и с этим проблем не возникает. Я также добавил использование Cake\Cache\Cache в файл объекта таблицы.
Моя конфигурация кэша в файле app.php выглядит следующим образом:
'Cache' => [
'default' => [
'className' => 'File',
'path' => CACHE,
],
'settings' => [
'className' => 'File',
'duration' => '+6 hours',
'path' => CACHE . 'settings/',
],
'_cake_core_' => [
// ...
],
'_cake_model_' => [
// ...
],
],
Кеш, кажется, успешно сохранен. Я могу просмотреть файл кеша, расположенный по адресу tmp / cache / settings / settings_site (не уверен, что это за расширение файла)
Однако, если я изменю данные в базе данных и обновлю страницу, отобразится обновленная информация, означающая, что она неправильно считывает данные из кэша и запрашивает результаты.
Что я делаю неправильно? Я получил этот код прямо из 3.X Cookbook: запись в кеш
1 ответ
Глупый я, я понял, что во время кэширования опускал опцию конфигурации:read(), поэтому он считывал данные из конфигурации по умолчанию, но я писал в конфигурацию "настройки".
// GET ALL CONFIG SETTINGS
function getConfigs(){
if(($settings_site = Cache::read($this->key, 'settings')) === false) {
$settings_site = $this->find('list', [
'keyField' => 'key',
'valueField' => 'value'
])->toArray();
Cache::write($this->key, $settings_site, 'settings');
}
return $settings_site;
} // END GET CONFIGS FUNCTION