Laravel найти кеш по ключу. Вы используете results
в качестве ключа.
Так что независимо от того, какой другой запрос вы передадите. Он все еще может найти кеш по results
.
, поэтому он вернет первый кеш, который вы храните в results
.
$key = "results:".$request->projectname.':' $request->limit;
Cache::rememberForever($key, function () use ($request) {
...
}
В этом хранилище будут храниться все различные projectname
вы request.
Однако
Задача 1:
Существует так много возможностей сравнения, которые пользователь может запросить. Я не думаю, что это хорошая идея хранить весь этот кеш. Если их не так много, это нормально.
Решение:
Или вы можете использовать remember()
вместо rememberForever()
$ttl = ????; // Find the appropriate time to expire the cache
$value = Cache::remember($key, $ttl, function () {});
Задача 2:
В вашем кэше $request->limit
.
Это означает, что кто-то вставит или удалит запись в этой таблице. В следующий раз, когда вы сделаете запрос с другим limit
, вы столкнетесь с дублированными записями.
Решение:
Поэтому я думаю, что вы можете очистить кеш после того, как вы create
, update
или delete
записей.