请求捆绑

您是视觉学习者吗?
通过我们深入的屏幕录制掌握 Livewire
立即观看

Livewire 中的每个组件更新都会触发网络请求。默认情况下,当多个组件同时触发更新时,它们会被捆绑到一个请求中。

这会导致与服务器的网络连接减少,并可以显著降低服务器负载。

除了性能提升之外,这还内部解锁了需要多个组件协作的功能(响应式属性可建模属性等)。

但是,有时出于性能原因,需要禁用此捆绑。以下页面概述了在 Livewire 中自定义此行为的各种方法。

隔离组件请求

通过使用 Livewire 的 #[Isolate] 类属性,您可以将组件标记为“隔离”。这意味着每当该组件进行服务器往返时,它都会尝试将自己与其他组件请求隔离。

如果更新很昂贵,并且您希望与其他更新并行执行此组件的更新,则此功能很有用。例如,如果多个组件正在使用 wire:poll 或在页面上侦听事件,您可能希望隔离特定组件,其更新很昂贵,否则会阻止整个请求。

use Livewire\Attributes\Isolate;
use Livewire\Component;
 
#[Isolate]
class ShowPost extends Component
{
// ...
}

通过添加 #[Isolate] 属性,此组件的请求将不再与其他组件更新捆绑在一起。

延迟组件默认情况下是隔离的

当单个页面上的许多组件“延迟”加载(使用 #[Lazy] 属性)时,通常希望它们的请求被隔离并并行发送。因此,Livewire 默认隔离延迟更新。

如果你希望禁用此行为,你可以将 isolate: false 参数传递到 #[Lazy] 属性中,如下所示

<?php
 
namespace App\Livewire;
 
use Livewire\Component;
use Livewire\Attributes\Lazy;
 
#[Lazy(isolate: false)]
class Revenue extends Component
{
// ...
}

现在,如果同一页面上存在多个 Revenue 组件,所有十次更新将被捆绑并作为单个延迟加载网络请求发送到服务器。