silocan Posted September 17, 2018 Share Posted September 17, 2018 Bonjour à tous, Je rencontre un problème de performance sur un de mes modules. J'utilise un module permettant d'afficher et filtrer l'ensemble des combinaisons pour un produit. J'ai créé un nouveau module qui permet d'associer un délais de livraison spécifique par combinaison. j'appel donc via un hook dans mon premier module afin d'afficher l'information ce qui donne : ... {foreach from=$list_id_product_attribute item=id} {$ipa = $id.id_product_attribute} {assign var=link_combination value=$link->getProductLink($product, null, null, null, null, null, $ipa)} {* DISPLAY HTML *} {hook h='displayDeliveryTimingForProductAttribute' mod='delaislivraison' product_attribute=$ipa product=$id_product} {* DISPLAY HTML *} {/foreach} ... Mon problème est que : Cas 1 : Si j'active le cache, j'ai la même valeur pour l'ensemble de mes combinaisons car il va systèmatiquement prendre la valeur en cache Cas 2: Je vide le cache à chaque appel : $this->_clearCache('displayDeliveryTimingForProduct.tpl'); return $this->display( __FILE__, 'views/front/displayDeliveryTimingForProduct.tpl', array( 'deliveryTiming' => $productDeliveryTiming, ) ); Et dans ce cas ma page met plus de 10s à s'afficher. Comme puis-je gérer ce cas ? Je ne dois pas utiliser correctement le cache et/ou le hook. Pouvez-vous m'aider ? Merci d'avance, Cordialement, Nicolas Link to comment Share on other sites More sharing options...
Eolia Posted September 17, 2018 Share Posted September 17, 2018 Assignez au cache_id l'id_product et l'id_product_attribute, vous aurez alors un cache par combinaison^^ // votre code qui génère le tpl public function VotreFonction() { // récupération des variables $id_product = XXXX; $id_product_attribute = YYYYY; if (!$this->isCached('displayDeliveryTimingForProduct.tpl', $this->getCacheId($id_product, $id_product_attribute))) { // votre traitement qui va générer le contenu du tpl } return $this->display(__FILE__, 'displayDeliveryTimingForProduct.tpl', $this->getCacheId($id_product, $id_product_attribute)); } protected function getCacheId($id_product, $id_product_attribute = 0) { return parent::getCacheId().'|'.$id_product.'|'.$id_product_attribute; } Link to comment Share on other sites More sharing options...
silocan Posted September 17, 2018 Author Share Posted September 17, 2018 Super, merci beaucoup ! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now