Используйте кэшированную версию результатов MySQL при загрузке Laravel View - PullRequest
0 голосов
/ 28 апреля 2018

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

например.

userCount | veryActiveUserCount | veryActiveUserMalePercent
-----------------------------------------------------------
88292     | 43223               | 59
-----------------------------------------------------------

Проблема в том, что этот запрос MySQL занимает около 10 секунд, что приводит к тайм-ауту Laravel.

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

1 Ответ

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

Читали ли вы документы о кэшировании ?

Вы можете кэшировать запрос следующим образом:

$value = Cache::get('key', function () {
    return DB::table(...)->get();
});

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

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