Laravel 新闻主页 有多个部分展示最新的文章、趋势文章、最近涵盖的包、新发布的教程等。每个部分都通过我们主页组件上的计算属性获取其数据。
因此,这个过程会导致单个页面产生大量的查询,这里有一段视频展示了我们如何解决缓存这些查询的问题。或者继续阅读,以文章形式了解我们是如何做到的...
以下是一个示例,展示了其中一个用于提取文章的计算部分
public function recent(): Collection{ return Article::active() ->latest() ->limit(6) ->get();}
在我们的案例中,登陆页面产生了将近 20-25 个查询,这似乎没有必要。
网站上访问量最大的页面真的需要执行这么多的查询吗?
当然不!
这就是组件缓存的用武之地。Laravel Livewire 提供多种缓存方法,以提高效率并减少资源使用。
最简单的方法就是将 cache:true
添加到计算属性中
#[Computed(cache: true)]public function recent(): Collection{ return Article::active() ->latest() ->limit(6) ->get();}
Livewire 会默认缓存它一个小时,然后清除。但是,如果你有很多部分,但只需要清除其中一个的缓存怎么办?这种方法只适用于清除所有缓存的情况。
在最新的 Livewire 版本中,你现在可以传递你自己的键,以便对清除缓存进行更精细的控制
#[Computed(cache: true, key: 'home-recent')]public function recent(): Collection{ return Article::active() ->latest() ->limit(6) ->get();}
有了它,你就可以像这样使用键进行清除
Cache::forget('home-recent');
计算属性与缓存相结合,确实非常强大!为它们添加键可以显著提高其潜力。它提供了更大的灵活性来控制缓存。
有关更多信息,请查看 Livewire 文档。