轻松缓存 Blade 模板片段

Laravel

Laravel Blade Cache DirectiveRyan Chandler 开发的一个扩展包,它允许你缓存 Blade 的块文件。该软件包提供了一个 @cache 指令,你可以按如下方式使用:

{{-- 提供缓存键和 TTL(默认为 1 小时) --}}
@cache('current_time', 30)
    {{ now() }}
@endcache

缓存块将使用 Laravel 的应用程序缓存进行缓存,如果你想以每个模型的方式缓存块,它甚至允许字符串插值:

@cache("user_profile_{$user->id}")
    {{ $user->name }}
@endcache

你可能会好奇,{{ now() }} 缓存块示例会产生类似于以下输出的内容:

$__cache_directive_arguments = ['current_time', 300];

if (count($__cache_directive_arguments) === 2) {
    [$__cache_directive_key, $__cache_directive_ttl] = $__cache_directive_arguments;
} else {
    [$__cache_directive_key] = $__cache_directive_arguments;
    $__cache_directive_ttl = config('blade-cache-directive.ttl');
}

if (\Illuminate\Support\Facades\Cache::has($__cache_directive_key)) {
    echo \Illuminate\Support\Facades\Cache::get($__cache_directive_key);
} else {
    $__cache_directive_buffering = true;

    ob_start();
    ?>
    <?php echo e(now()); ?>

    <?php
    $__cache_directive_buffer = ob_get_clean();

    \Illuminate\Support\Facades\Cache::put($__cache_directive_key, $__cache_directive_buffer, $__cache_directive_ttl);

    echo $__cache_directive_buffer;

    unset($__cache_directive_key, $__cache_directive_ttl, $__cache_directive_buffer, $__cache_directive_buffering, $__cache_directive_arguments);
}

你可以在 GitHub 上了解有关此软件包的更多信息、获取完整的安装说明,并查看 源代码

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/blade-cache-dir...

译文地址:https://learnku.com/laravel/t/66083

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!