Magento: Mage::registre('current_product') efficace?
C'est probablement quelque chose d'évident si vous connaissez le processus derrière elle.. Mais lorsque vous utilisez Mage::registry('current_product')
sur une page produit, par exemple, êtes-vous simplement de référencement de quelque chose qui est déjà "chargé" ou êtes-vous de les charger à chaque fois que vous exécutez cette ligne de code?
En d'autres termes, ce qui est plus efficace? (pseudo-code ci-dessous)
Mage::registry('current_product')->getName() over and over
Ou...
$temp = Mage::registry('current_product') then
$temp->getName() over and over
OriginalL'auteur musicliftsme | 2013-08-09
Vous devez vous connecter pour publier un commentaire.
Appel
plus et plus encore, seront légèrement moins efficace que
Mais il n'est pas si mauvais que je serais super inquiète. Si vous êtes à la définition d'un style de codage, de choisir la seconde. Si vous avez un tas de vieux code avec l'ancien, ne vous inquiétez pas au sujet de sa performance.
Le produit lui-même ne pas être rechargés à partir de la base de données lorsque vous appelez
Mage::registry('current_product')
— tous cette méthode n'est retourne un objet de référence qui a été stocké sur un tableau statique de laMage
classe.La raison que je dis que l'ancien sera un peu moins efficace, si vous jetez un oeil à la source de
registry
Vous verrez Magento vérifier si la valeur de la clé avant de retourner une valeur. Cette case, en théorie, est plus de travail que la saisir dans
registry
une fois, puis de réutiliser la variable.Cependant, en pratique, vous allez avoir de plus grands goulets d'étranglement avant, c'est un vrai problème.
OriginalL'auteur Alan Storm