Почему мой кэш не истекает на Laravel 4.2 при использовании 0 минут - PullRequest
0 голосов
/ 21 января 2020

Фон

Laravel В версии 4.2 предлагается кэширование на уровне QueryBuilder с использованием вызова метода remember().

В документации предлагается использовать * 1007. * или remember($minutes)

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

Вопрос

Почему ниже кеш запроса не истекает сразу?

$model = Model::remember(0)->where('id', 789)->first();

Я использую драйвер file.

1 Ответ

0 голосов
/ 21 января 2020

Состояние Laravel Документы

Кэширование запросов Вы можете легко кэшировать результаты запроса, используя метод Remember или RememberForever:

$users = DB::table('users')->remember(10)->get();

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

В документации не указывается, что если вы используете драйвер file и передаете 0, тогда вы попадете в эту строку кода.

protected function expiration($minutes)
{
    if ($minutes === 0) return 9999999999;

    return time() + ($minutes * 60);
}

Это означает, что вы получите файловый кеш с истечением Sat, 20 ноября 2286 г. 17:46:39 + 0000

...