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

时间:2016-05-13 19:03:51

标签: php laravel caching blade

如何缓存刀片文件?

示例代码:

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

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

最好的方法是什么?谢谢!

2 个答案:

答案 0 :(得分:0)

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

你当然可以找到许多方法,例如我们构建 if(text.charAt(i) == System.lineSeparator() && text.charAt(++i) == System.lineSeparator()) { text.deleteCharAt(++i); System.out.println("REPLACED AN EMPTY LINE"); } 字符串并将其输出到视图中,看看下面的问题

Elegant way to run nested loops in views (Laravel)

答案 1 :(得分:0)

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

使用PHP编译器会导致每个@include包含一个包含。但是,这不太可能导致性能受到重大影响。如果你能提供相反的任何参考,那将是好的。

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