- Issue created by @mglaman
- Merge request !63#3545477: Use subrequests when getting component list in `::getAllComponentsKeyedBySource()` → (Merged) created by narendraR
XbAiPageBuilderHelper::getAllComponentsKeyedBySource calls ApiConfigControllers::list multiple times and is expensive, calls controller directly. Performing a subrequest would probably improve speed by hitting dynamic page cache.
Subrequest for caching component list to improve performance. Brought getComponentContextForAi down to 62ms for 2 calls.
// Create a subrequest to the internal API route.
$mainRequest = $this->requestStack->getCurrentRequest();
$subRequest = Request::create(
Url::fromRoute('experience_builder.api.config.list', ['xb_config_entity_type_id' => Component::ENTITY_TYPE_ID])->toString(),
'GET',
[],
$mainRequest?->cookies->all() ?? [],
[],
$mainRequest?->server->all() ?? []
);
$subRequest->attributes->set('_format', 'json');
$available_components_response = $this->httpKernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
Active
1.0
AI