Laravel-在foreach循环期间缓存部分视图


Laravel - cache partial view during a foreach loop

如何缓存刀片文件?

样本代码:

@foreach ($files as $file)
   @include('partials.file')
@endforeach

如果有100个文件,则刀片将加载100次。有办法缓存它吗?如果在部分刀片文件中存在查询,则可能需要很长时间。

最好的方法是什么?谢谢

我相信你不需要担心缓存刀片模板,laravel将刀片模板编译成原始php并为其创建缓存版本,但这些都是内部的,担心它毫无意义。

当然,你可以找到很多方法,比如我们构建View()->render()字符串,并将其输出到视图中。看看下面的问题

在视图中运行嵌套循环的优雅方式(Laravel)

Blade编译器缓存每个视图的一个实例。因此,如果您使用的是Blade模板,那么您只"包含"视图一次。

的确,使用PHP编译器会导致每个@include包含一个include。然而,这确实不太可能对性能造成重大影响。如果你能提供任何相反的参考,那就太好了。

最终,如果您真的关心在模板中包含一个文件,请将循环内容内联并删除抽象。这样,你的循环就没有包含,你的问题就解决了。