Php Laravel正在创建缓存,但加载时间相同
所以我试图在我的一个控制器上缓存一个查询,在大约12-19秒内返回大约30k条记录,这显然是不可接受的。我正在尝试集成基本缓存,虽然我看到加载页面后缓存文件出现在项目中,但我加载结果的时间仍然是一样的。有人知道为什么会这样吗?我对Laravel比较陌生–是否还有其他地方可以使用这种缓存?我还看到了路由级别缓存的各种示例Php Laravel正在创建缓存,但加载时间相同,php,laravel,caching,laravel-7,Php,Laravel,Caching,Laravel 7,所以我试图在我的一个控制器上缓存一个查询,在大约12-19秒内返回大约30k条记录,这显然是不可接受的。我正在尝试集成基本缓存,虽然我看到加载页面后缓存文件出现在项目中,但我加载结果的时间仍然是一样的。有人知道为什么会这样吗?我对Laravel比较陌生–是否还有其他地方可以使用这种缓存?我还看到了路由级别缓存的各种示例 public function index() { $questions = Cache::remember('questions', 60*60*24, functio
public function index()
{
$questions = Cache::remember('questions', 60*60*24, function() {
return Question::with('tags')
->orderBy('updated_at', 'desc')
->with('exams.class')
->with('assignment.course')
->get();
});
$archived_questions = Cache::remember('archived-questions', 60*60*24, function() {
return Question::onlyTrashed()->with('tags')
->orderBy('deleted_at', 'desc')
->get();
});
return view('admin.index', ['questions' => $questions, 'archivedQuestions' => $archived_questions]);
}
您正在为每个索引操作设置缓存,这意味着每次加载页面时,您都在运行该查询并将其分配给缓存 试试这个
public function index()
{
if (Cache::has('questions')) {
$questions = Cache::get('questions');
} else {
$questions = Cache::remember('questions', 60*60*24, function() {
return Question::with('tags')
->orderBy('updated_at', 'desc')
->with('exams.class')
->with('assignment.course')
->get();
});
}
if (Cache::has('archivedQuestions')) {
$archivedQuestions= Cache::get('archivedQuestions');
} else {
$archived_questions = Cache::remember('archived-questions', 60*60*24, function() {
return Question::onlyTrashed()->with('tags')
->orderBy('deleted_at', 'desc')
->get();
});
}
return view('admin.index', ['questions' => $questions, 'archivedQuestions' => $archived_questions]);
}
看看这些文件;特别是“从缓存中检索项”只需检查一下,您是否已将索引和外键添加到这些表中?呵呵,他们查过了。谢谢你的回复!不幸的是,这似乎并没有改变事情——还有你所说的问题,不记得()既要检查缓存是否存在,也要注册缓存(如果不存在)?你是对的,也许我应该阅读文档lol,你能运行
php artisan cache:clear
并让我知道你是否仍然遇到同样的问题吗?如果这真的失败了。尝试复制我的代码并在每个“其他”条件中打印,以查看它是否到达那里