Laravel 中的 Blade 模板中的 If 条件性能

If conditions performances in Blade templates in Laravel

我只是想问一个关于在 Laravel 框架内使用 blade 模板的性能的简单问题。让我们谈谈大型项目。

我很想知道像这样实现 if 条件是否更高效:

@if(isset($training))
  <a class="btn" href="{{MYLIB\URL::training_url($sector, $category, $training)}}">Nu inschrijven<span class="icon-right"></span></a>
@endif

还是这样?

<?php if (isset($page)){ ?>
  <h2>{{{ $page->title }}}</h2>
<?php } ?>

提前致谢

Laravel 只是在第一遍临时视图文件中将 blade 语法转换为正常的 php 语法,这些文件存储在 /app/storage.

所以blade和常规php命令之间基本上没有性能差异

由于 laravel 编译和缓存模板,唯一的轻微开销是在第一次访问 blade 模板时,之后性能完全没有差异

Blade 语法编译为原始 PHP。这意味着:

@if(isset($page))
    <h2>{{{ $page->title }}}</h2>
@endif

变成这样:

<?php if(isset($page)): ?>
    <h2><?php echo e($page->title); ?></h2>
<?php endif; ?>

此编译模板然后存储在storage/framework/viewsapp/storage/views in Laravel 4)

结论

唯一的性能损失是编译。理想情况下,这只会在视图文件更改或首次访问时发生。如果您问我,您肯定首先要担心其他性能瓶颈。 (尤其是数据库查询或糟糕的架构)