Skip to content

Memoize qcdpagebuilder lookup and add per-request cache for latest pages#986

Merged
CySSoO merged 1 commit intomasterfrom
cyssoo/add-internal-method-in-everblock.php
Feb 26, 2026
Merged

Memoize qcdpagebuilder lookup and add per-request cache for latest pages#986
CySSoO merged 1 commit intomasterfrom
cyssoo/add-internal-method-in-everblock.php

Conversation

@CySSoO
Copy link
Contributor

@CySSoO CySSoO commented Feb 26, 2026

Motivation

  • Éviter les résolutions répétées de Module::getInstanceByName('qcdpagebuilder') pour réduire l'overhead quand le même builder est utilisé plusieurs fois dans une requête.
  • Réduire les appels répétitifs à EverblockPage::getPages() lorsque le même bloc everblock_latest_pages est rendu plusieurs fois dans la même requête.
  • Permettre l'injection d'un module QCD pré-résolu dans le renderer pour centraliser la logique de résolution et améliorer la clarté du code.

Description

  • Ajout de la méthode interne getQcdBuilderModule(): ?Module dans everblock.php avec mémoïsation par propriété d'instance et cache statique pour éviter des résolutions répétées via Module::getInstanceByName.
  • Réutilisation de getQcdBuilderModule() dans hookFilterQcdPageBuilderThirdPartyBlockFrontRender (injection du module dans QcdThirdPartyBlockRenderer) et dans everHook autour de l'appel à renderTargetField.
  • Mise à jour de src/Service/QcdThirdPartyBlockRenderer.php pour accepter un paramètre optionnel ?Module $qcdBuilderModule dans le constructeur et réutiliser ce module pour le rendu des blocs everblock_select au lieu d'appeler Module::getInstanceByName localement.
  • Conservez la borne limit pour everblock_latest_pages (min(..., 50)) et ajoutez un cache léger par requête (static $latestPagesCache) dans renderLatestPagesContext, avec une clé composée de language/shop/limit/customer-groups (groupes triés et castés en int) pour éviter de recalculer EverblockPage::getPages() pour des blocs identiques.

Testing

  • Vérification de syntaxe PHP sur les fichiers modifiés avec php -l everblock.php et php -l src/Service/QcdThirdPartyBlockRenderer.php, les deux commandes n'ont retourné aucune erreur de syntaxe.
  • Validation basique du diff et des modifications appliquées via les outils de développement (fichiers modifiés unitaires).

Codex Task

@CySSoO CySSoO merged commit c231460 into master Feb 26, 2026
2 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant