osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

> Optimisez les performances de votre boutique !
petrus
posté 27 May 2005, 07:25
Message #1


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 193
Inscrit : 18-January 05
Membre no 4421



Bonjour,

J'ai trouvé cet article fort intéressant sur le forum osCommerce anglophone. J'ai appliqué les recommandations qu'il contient et les performances de ma boutique se sont de ce fait considérablement améliorées.

D'où l'idée de le partager avec la communauté francophone. Certains d'entre vous l'ont déjà certainement lu, mais je pense en partiulier à ceux qui ne maîtrisent pas la langue de Shakespeare.

L'auteur de cet article est Bobby Easland, alias Chemo. Il est l'auteur de nombreuses contributions. Vous pouvez trouver l'intégralité du fil de discussion ici.

Bonne lecture !

QUOTE

Comment optimiser la vitesse/performance de votre boutique – par Chemo


Maintenant que votre boutique est opérationnelle et dotée de produits, il est temps de porter votre attention sur les performances de votre site. D’une façon générale, les clients aiment les pages se chargeant rapidement. S’ils doivent attendre durant le chargement, le taux de conversion des visites en achats diminuera. Voici donc quelques éléments de base, mais essentiels, de l’optimisation des performances.


IMAGES

De loin le coupable principal du ralentissement du chargement des pages ! Une réponse simple est d’installer un générateur automatique de vignettes avec gestion de cache. Il est important d’utiliser un générateur mettant en cache les images plutôt que de les générer à la volée, ceci dégradant terriblement les performances. Les effets peuvent ne pas être sensibles sur une boutique recevant 1 ou 2 visiteurs à l’heure, mais si la fréquentation est significative, vous devez absolument mettre vos images en cache. Après tout, vous avez consacré des ressources du serveur à la création de vignettes, alors pourquoi ne pas les stocker pour les réutiliser plus tard au lieu de les recréer ?


CONTRIBUTIONS

Installez SEULEMENT celles que vous devez utiliser et SEULEMENT celles qui vont faire gagner du temps ou ajouter de la valeur au processus d’achat. Les contributions répondant à ces critères dépendent de votre type de boutique et des produits que vous vendez. Toute contribution est consommatrice de ressource, que ce soit du code PHP pur ou bien des requêtes MySQL (ou les deux). Règle d’or : N’INSTALLEZ QUE LE NOMBRE MINIMUM DE CONTRIBUTIONS. Trop souvent, un propriétaire de magasin devient fou de contributions et installe tous les gadgets possibles. Ceci fait considérablement gonfler la base de code et les performances en souffrent... l'intention est d’améliorer le processus d'achat mais l'effet est de le DÉGRADER en raison de la lenteur de chargement.


ENLEVEZ LES FONCTIONS INUTILISÉES

Plusieurs fonctions de l’OsCommerce de base sont ou ne sont pas utilisées, dont le retrait améliorerait les performances. Par exemple : les bannières, l’affichage en pied de page du "nombre de requêtes depuis", qui est en ligne, etc.

Si vous n’utilisez pas ces fonctions, enlevez (commentez) le code.

L’élimination de ces fonctions a un autre avantage : il ne sollicite pas les fonctions de cache de requêtes MySQL. Lors de chaque insert, le cache est vidé. Bien entendu, cela suppose aussi de stocker les sessions dans le système de fichiers !


STS - Simple Template System

Je veux mettre un accent particulier sur cette contribution, car c’est l’un des pires consommateurs de requêtes, et c’est aussi l’un des systèmes de template pour osCommerce les plus populaires. Si vous avez un nombre de catégories significatif dans votre boutique, cette contribution va tuer les performances de votre site. Elle réalise un balayage complet de table lors de chaque demande de chargement de page. Si vous avez plus d’une centaine de catégories, le temps de chargement augmentera de 200 à 300% suivant les caractéristiques du serveur.

Bref, si vous voulez de la vitesse, n’utilisez pas de système de template… Apprenez à modifier cette application monolithique qu’est osCommerce.


SESSIONS

Si vous stockez les sessions dans la base de données, il vous faut ajouter un index primaire multi-colonnes sur les colonnes "sesskey" et "expiration". Cela prendra davantage d'espace physique mais ce sera beaucoup plus rapide.


CACHE – Stockage du Code et mise en Cache des Pages

La possibilité de mettre des données en cache est déterminante pour les performances... particulièrement si vous avez de nombreuses catégories, produits et/ou commandes. Je recommande de créer un répertoir AU-DESSUS de la racine accessible publiquement et de lui donner les permissions en lecture/écriture pour le serveur. Le fait de placer ce cache AU-DESSUS de la racine du site empêche l'accès de hackers avec leur explorateur. Réglez vos paramètres  de cette façon et ne stockez pas le cache dans le répertoire "/tmp", cela évitera des riques inutiles.

Une fois ces réglages effectués, ACTIVEZ LE CACHE. L'effet est particulièrement sensible sur la box "catégories" !

La contribution Page Cache a été créée pour les boutiques ayant tant de contributions installées qu'il est pratiquement impossible d'optimiser le code. La bonne solution est de ne pas surcharger la boutique de contributions non nécessaires...Mais si vous êtes dans ce cas, Page Cache est fait pour vous. J'utilise Page Cache en dernier ressort, pas comme un premier choix.


COMPACTEZ VOS PAGES HTML

La plupart connaissent la compression de pages via GZIP. Le réglage optimal pour la vitesse est la compression de niveau 1; les niveaux de compression supérieurs ne réduiront pas de façon significative la taille des pages. Quoi qu'il en soit, il est bon de compresser physiquement les données à Gzipper en enlevant les espaces et les sauts de lignes superflus.

Voici la fonction que j'utilise :

CODE


function compress_buffer ($buffer) {
# Return the compressed buffer
return str_replace("\n", ' ', preg_replace('/\>\s+\</', '> <', $buffer));
}


Bien sûr, ce n'est qu'un point de départ et vous allez devoir imaginer comment le combiner avec GZIP.

Précisions :

Dans includes/functions/gzip_compression.php :
1) Insérer la fonction ci-dessus.
2) Remplacer

CODE

/* $level = compression level 0-9, 0=none, 9=max */
 function tep_gzip_output($level = 5) {
   if ($encoding = tep_check_gzip()) {
     $contents = ob_get_contents();
     ob_end_clean();

     header('Content-Encoding: ' . $encoding);

     $size = strlen($contents);
     $crc = crc32($contents);

     $contents = gzcompress($contents, $level);
     $contents = substr($contents, 0, strlen($contents) - 4);

     echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
     echo $contents;
     echo pack('V', $crc);
     echo pack('V', $size);
   } else {
     ob_end_flush();
   }
 }


Par :

CODE

/* $level = compression level 0-9, 0=none, 9=max */
function tep_gzip_output($level = 1) {
  if ($encoding = tep_check_gzip()) {
    $content = ob_get_contents();
 $contents = compress_buffer( $content );
 unset( $content );
    ob_end_clean();

    header('Content-Encoding: ' . $encoding);

    $size = strlen($contents);
    $crc = crc32($contents);

    $contents = gzcompress($contents, $level);
    $contents = substr($contents, 0, strlen($contents) - 4);

    echo "\x1f\x8b\x08\x00\x00\x00\x00\x00";
    echo $contents;
    echo pack('V', $crc);
    echo pack('V', $size);
  } else {
    $contents = ob_get_contents();
    ob_end_clean();
 echo compress_buffer( $contents );
  }
}




La compression physique des pages avec GZIP réduira le code HTML en sortie de près de 60 à 75% et améliorera nettement les performances, spécialement avec les connexions par modem.


OPTIMISATION DU CODE ET DES REQUÊTES

J'ai voulu aborder ce point en dernier car c'est celui pour lequel les cas de figures sont les plus variés.Cela est dû au fait que chaque boutique est différente. Elles comencent toutes avec la même base de code, mais chacun installe des contributions différentes. Le résultat en est une grande diversité quant au code à optimiser.

Un bon point de départ est d'installer une bonne contribution de déboggage des requêtes. Cela vous permettra de voir les requêtes exécutées pour chaque page, et d'identifier facilement celles qui sont redondantes ou trop longues à exécuter. Une fois que vous avez mis le doigt sur ce qui doit êtr amélioré, c'est plus facile de le faire…...Ne faites jamais AUCUNE optimisation aveugle. Modifiez TOUJOURS le code dans un but précis. C'est du bon sens ? Vous seriez surpris...

Encore une fois, je n'aborderai pas les optimisations relatives à des contributions spécifiques, mais seulement celles qui sont communes à toutes les boutiques osC. La classe de taxes MS3 pour la MS2 en est une. Elle remplace la classe de taxes MS2 d'origine par la nouvelle classe de taxes de la MS3, qui est beaucoup plus efficace, et moins gourmande en requêtes par page. LA REQUÊTE DE TAXE EST EXÉCUTÉE À CHAQUE AFFICHAGE DE PRIX, MÊME SI L'AFFICHAGE DE LA TVA EST DÉSACTIVÉ. C'est important de le savoir, car la plupart pensent qu'en désactivant l'option dans le panneau d'administration, il n'y aura pas de requête de taxe... C'est faux et, MÊME SI L'OPTION EST DÉSACTIVÉE, LA REQUÊTE DE TAXE SERA EXÉCUTÉE. Pourquoi est-ce important ? Parce que  cette requête est l'une des plus gourmandes en ressources serveur ! En 2 minutes d'installation, cette nouvelle classe de taxes va accroître considérablement les performances.

Le module also_purchased est un puissant outil d'aide à la vente bien qu'il soit de loin le plus gros consommateur de requêtes dans une application osCommerce. C'est particulièrement vrai pour les boutiques dotées d'un nombre significatif de produits et de commandes. J'ai déjà vu ce module mettre à genoux un serveur biprocesseur 2.8 Ghz avec 1Go  de RAM...en exécutant seulement 1 requête. À mesure que vous accumulez les commandes, vous sentirez les produits pour lesquels la vente croisée serait idéale. Aussi, il serait bon d'installer une contribution de vente croisée. C'est un peu plus lourd à maintenir mais l'accroissement de la performance qui en résulte en vaut la peine.

À chaque demande de page, le contenu de la table est chargé. L'implication de cela, c'est qu'à chaque demande de page, le serveur doit scanner la table pour générer les données...ce qui, en fonction des contributions installées, ajoutera de la charge à chaque chargement de page. Pour remédier à cela, il y a une excellente contribution : Faster Page Loads, Less DB Queries. Cette contribution met les données en cache et élimine les requêtes dans la base de données...réservant ainsi le balayage de table aux cas où la page n'est pas présente en cache. Cette contribution est FORTEMENT recommandée.

Ce post ne prétend pas être un guide absolu de l'optimisation d'une boutique osCommerce mais vous donnera, j'espère, quelques repères pour savoir où faire porter vos efforts en priorité.



--------------------
Pierre

MS2 Fr - Easy Populate - Main Categories - Colissimo suivi - Send order html email - Box Image Thema - admin : copy, move and delete multiple products - Add new Fields - Featured Products - Ultimate SEO URLs 2.1d - Faster Page Loads, Less DB queries - Page Cache - Credit Class & Gift Voucher - Specials on Default - leguide.com - Google XML Sitemap
Go to the top of the page
 
 
Start new topic
Réponse(s)
sykaflex
posté 13 Mar 2009, 00:41
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1335
Inscrit : 12-July 08
Lieu : aux Açores au milieu de l'atlantique
Membre no 22434



Citation
CONTRIBUTIONS

Installez SEULEMENT celles que vous devez utiliser et SEULEMENT celles qui vont faire gagner du temps ou ajouter de la valeur au processus d’achat. Les contributions répondant à ces critères dépendent de votre type de boutique et des produits que vous vendez. Toute contribution est consommatrice de ressource, que ce soit du code PHP pur ou bien des requêtes MySQL (ou les deux). Règle d’or : N’INSTALLEZ QUE LE NOMBRE MINIMUM DE CONTRIBUTIONS. Trop souvent, un propriétaire de magasin devient fou de contributions wub.gif 'males ou femelles ? mrgreen.gif et installe tous les gadgets possibles angry.gif il faudrait censurer, ca dérape ! mrgreen.gif . Ceci fait considérablement gonfler la base de code et les performances en souffrent... l'intention est d’améliorer le processus d'achat mais l'effet est de le DÉGRADER en raison de la lenteur de chargement.
ils sont vraiment minimalistes ces anglophones ! Hello, I cash your money, thanks, goodbye , et qu'est-ce qu'on va raconter sur le forum si il n'y a plus les contribs mrgreen.gif
bon post idées intéressantes OK pour l'optimisation ... mais d'abord du porte monnaie de nos clients parce que vu qu'ils n'ont plus de tunes ils ont le temps de ramer !


--------------------
entre chats : chat affamé cherche chat pelure pour faire sauter chat perché dans poil de chat (allergiques s'abstenir)

ah oui ... osCommerce v2.2 RC1 french by Delaballe "merci à lui" - PHP version 4.4.8 - mysql5-41 - OVH 240Plan - contribs : (entre autre) AJAX-AttributeManager-V2.8.2 - Limit_Countries - Multi-Product Update v1.00 - Quick Updates 2.7 - Individual Product Shipping Prices - v1_0 - Attribute Qty Product Info - user_tracking_1 - Visitor Web Stats 3.2.1 - Sort Order - image_subdirectories - master password v1.4 - virementbancaire1.4 - Welcome_Email_password ...
"et grand merci à tous les contributionneurs"
Go to the top of the page
 

Les messages de ce sujet


Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 29th March 2024 - 14:21
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)