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
Другие вопросы по тегам