<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Magentips &#187; Configuration</title>
	<atom:link href="http://www.magentips.com/tag/configuration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.magentips.com</link>
	<description>La boîte à outils des utilisateurs de Magento : ressources, analyses, trucs et astuces, dossiers, extensions, tests</description>
	<lastBuildDate>Thu, 02 Feb 2012 23:18:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Flat catalog : attention à la configuration des attributs</title>
		<link>http://www.magentips.com/2009/12/flat-catalog-configuration-attributs/</link>
		<comments>http://www.magentips.com/2009/12/flat-catalog-configuration-attributs/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:33:24 +0000</pubDate>
		<dc:creator>Christophe</dc:creator>
				<category><![CDATA[3. Avancé]]></category>
		<category><![CDATA[4. Expert]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Catalogue]]></category>
		<category><![CDATA[CE 1.3.0]]></category>
		<category><![CDATA[CE 1.3.1]]></category>
		<category><![CDATA[CE 1.3.1.1]]></category>
		<category><![CDATA[CE 1.3.2]]></category>
		<category><![CDATA[CE 1.3.2.1]]></category>
		<category><![CDATA[CE 1.3.2.2]]></category>
		<category><![CDATA[CE 1.3.2.3]]></category>
		<category><![CDATA[CE 1.3.2.4]]></category>
		<category><![CDATA[CE 1.3.x]]></category>
		<category><![CDATA[CE 1.4.0.0]]></category>
		<category><![CDATA[CE 1.4.x]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Développement web]]></category>
		<category><![CDATA[Données]]></category>
		<category><![CDATA[EE 1.6.0.0]]></category>
		<category><![CDATA[EE 1.6.x]]></category>
		<category><![CDATA[Exploitation]]></category>
		<category><![CDATA[Magento Community Edition]]></category>
		<category><![CDATA[Magento Enterprise Edition]]></category>
		<category><![CDATA[Trucs et astuces]]></category>
		<category><![CDATA[attribut]]></category>
		<category><![CDATA[EAV]]></category>
		<category><![CDATA[flat catalog]]></category>
		<category><![CDATA[optimisation]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.magentips.com/?p=377</guid>
		<description><![CDATA[Depuis Magento Community Edition 1.3.0, nous obtenons de bien meilleures performances sur le frontend, grâce au catalogue à plat ou flat catalog. Varien a introduit ce concept pour optimiser les temps de réponse des sites qui offrent un catalogue riche (aux alentours de 1000 produits, mais le seuil est très variable selon complexité des attributs, [...]]]></description>
			<content:encoded><![CDATA[<p>Depuis Magento Community Edition 1.3.0, nous obtenons de bien meilleures performances sur le frontend, grâce au <strong>catalogue à plat ou <em>flat catalog</em></strong>. Varien a introduit ce concept pour <strong>optimiser les temps de réponse</strong> des sites qui offrent un catalogue riche (aux alentours de 1000 produits, mais le seuil est très variable selon complexité des attributs, des jeux d&#8217;attributs et des types de produits).</p>
<p>Si l&#8217;activation du <em>flat catalog</em> est à peu près évidente (nous allons voir ça ci-après), il faut comprendre ce que fait Magento lorsqu&#8217;il crée les tables MySQL des produits à plat. Et on constate vite que, <strong>si on ne touche pas au paramétrage des attributs, on n&#8217;obtient pas du tout le résultat escompté !</strong></p>
<p><span id="more-377"></span></p>
<h3>Modèle EAV et flat catalog</h3>
<p>Ce qui fait la souplesse de Magento, c&#8217;est la gestion de ses attributs par un <a title="Modèle EAV sur Wikipedia" href="http://en.wikipedia.org/wiki/Entity-attribute-value_model">modèle EAV</a>. Chaque entité (produit, client, commande, etc.) est composée d&#8217;attributs (prix, couleur, pays, etc.) qui ont chacun une valeur (&laquo;&nbsp;100 €&nbsp;&raquo;, &laquo;&nbsp;vert&nbsp;&raquo;, &laquo;&nbsp;France&nbsp;&raquo;). Comme un site évolue vite, on doit pouvoir ajouter ou retirer des attributs aux entités. Le modèle EAV est conçu pour cela, il permet de <strong>gérer facilement des attributs et leurs valeurs, sans modifier la structure de la base de données et sans écrire une seule ligne de code</strong>.</p>
<p>C&#8217;est un avantage énorme, mais il y a une contrainte de taille : quand Magento doit récupérer une entité (un produit par exemple), il doit parcourir un nombre important de tables dans la base de données pour assembler les valeurs des attributs et reconstituer l&#8217;information. Quand il faut afficher une page de catégorie avec 50 produits qui disposent chacun de 50 attributs, on arrive vite à la limite du tolérable. Comme le temps de réponse d&#8217;un site est le critère numéro 1 dans le succès d&#8217;un site e-commerce, il fallait trouver une réponse. Vous en réviez ? Magento le fait !</p>
<p>Pour accélérer les requêtes en lecture sur la base de données, <strong>Magento va construire de nouvelles tables dont chaque champ (ou colonne) représentera un attribut et chaque enregistrement (ou ligne) les valeurs des attributs d&#8217;une entité</strong>. C&#8217;est simple et rapide !</p>
<p>Bien entendu, <strong>si le catalogue est modifié, les tables doivent être reconstruites pour stocker les nouvelles informations</strong>. On ne met donc en œuvre des entités plates que si les valeurs ne changent pas tout le temps. Inutile d&#8217;y chercher les stocks ou les prix remisés par exemple.</p>
<h3>Construire le flat catalog</h3>
<p>Maintenant que les concepts de base sont posés, il faut savoir une chose : <strong>le <em>flat catalog</em> n&#8217;existe pas par défaut</strong>. Il faut donc le créer soit même depuis l&#8217;interface d&#8217;administration.</p>
<p><strong>Pour créer un flat catalog :</strong></p>
<ul>
<li>Menu <em>Système &gt; Gestion du cache</em><br />
<img class="alignnone size-full wp-image-404" title="Construction du flat catalog" src="http://www.magentips.com/wp-content/uploads/2009/12/flat-catalog-cache.png" alt="Construction du flat catalog" width="287" height="100" /><br />
Il faut d&#8217;abord construire les tables dans MySQL, grâce à ces boutons. On a le choix d&#8217;aplatir les catégories, les produits ou les deux.</li>
<li>Menu Système &gt; Configuration &gt; Catalogue &gt; Frontend<br />
<img class="alignnone size-full wp-image-405" title="Activation du flat catalog" src="http://www.magentips.com/wp-content/uploads/2009/12/flat-catalog-activation.png" alt="Activation du flat catalog" width="470" height="97" /><br />
Si nous ne construisons pas les tables via la gestion du cache, ces deux options sont indisponibles. Mais comme nous l&#8217;avons fait, nous avons maintenant le choix d&#8217;utiliser le flat catalog sur le frontend. Pourquoi faire compliqué alors qu&#8217;une seule étape pourrait suffire ? Simplement parce que Magento peut gérer plusieurs sites. On peut avoir un <em>flat catalog</em> sur un site et pas sur l&#8217;autre.</li>
<li>Menu <em>Système &gt; Gestion du cache</em><br />
Oui, il faut y revenir pour ajouter nos entités (catégories et/ou produits) dans les tables à plat.</li>
</ul>
<p>C&#8217;est tout. Mais est-ce suffisant ? Pas du tout ! Si on analyse les tables créées, on s&#8217;aperçoit vite que <strong>tous les attributs n&#8217;y sont pas, en particulier ceux spécifiques au site</strong>.</p>
<p><img class="alignnone size-medium wp-image-406" title="Flat table par défaut" src="http://www.magentips.com/wp-content/uploads/2009/12/flat-catalog-table1-246x700.png" alt="Flat table par défaut" width="246" height="700" /></p>
<p>Si nous voulons afficher des valeurs d&#8217;attributs sans tuer les performances du serveur, il faut les ajouter à la structure des tables à plat. Pas de panique, inutile de faire ce sale boulot par des requêtes SQL hasardeuses. <strong>Magento a tout prévu&#8230; sauf de documenter ce détail essentiel !</strong></p>
<h3>Définir les attributs à aplatir</h3>
<p>Quand nous demandons la construction du <em>flat catalog</em>, Magento utilise l&#8217;<em>Indexer</em> du module <em>Catalog</em> qui contient des contrôles sur la configuration des attributs (fichier Mage\Catalog\Model\Resource\Eav\Mysql4\Product\Flat\Indexer.php). Il contrôle notamment l&#8217;état du paramètre <code>used_in_product_listing</code>. S&#8217;il est égal à 1, l&#8217;attribut est intégré au <em>flat catalog</em>.</p>
<p>Reste à savoir d&#8217;où vient cet état. Une petite recherche (<a title="Explorer Magento avec nWire" href="http://www.magentips.com/2009/12/explorer-magento-avec-nwire/">merci nWire !</a>) et le voici, caché dans la configuration d&#8217;attribut (fichier Adminhtml\Block\Catalog\Product\Attribute\Edit\Tab\Main.php). On a la solution.</p>
<p><strong>Pour ajouter un attribut dans le flat catalog :</strong></p>
<ul>
<li>Menu <em>Catalogue &gt; Attributs &gt; Gérer les attributs</em><br />
Sélectionner l&#8217;attribut à &laquo;&nbsp;aplatir&nbsp;&raquo;.</li>
<li>Volet <em>Propriétés du front-office</em><br />
<img class="alignnone size-full wp-image-407" title="Configuration de l'attribut pour le flat catalog" src="http://www.magentips.com/wp-content/uploads/2009/12/flat-catalog-attribut.png" alt="Configuration de l'attribut pour le flat catalog" width="467" height="55" /><br />
C&#8217;est là que se cache l&#8217;option. Il faut choisir <em>Oui</em> et sauvegarder l&#8217;attribut.</li>
<li>Menu <em>Système &gt; Gestion du cache</em><br />
On reconstruit le cache.</li>
</ul>
<p>Le résultat est nettement meilleur. J&#8217;ai maintenant mon attribut dans mon <em>flat catalog</em> (ici <em>manufacturer</em>). Et un mystère de moins !</p>
<p><img class="alignnone size-medium wp-image-408" title="Table plate après insertion d'attributs" src="http://www.magentips.com/wp-content/uploads/2009/12/flat-catalog-table2-234x700.png" alt="Table plate après insertion d'attributs" width="234" height="700" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.magentips.com/2009/12/flat-catalog-configuration-attributs/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

