Déjà inclus dans les squelettes d'articles etc.-->
Le projet BiDiShops

osCommerce : solutions pour tenir la charge

dimanche 28 février 2010 par Bertrand Degoy

Le site cherbourg-maquettes.com sert maintenant 3 millions de pages par mois, soit 100.000 par jour et des pics à 10 pages par secondes aux heures de pointe. Il est apparu rapidement que le code d’osCommerce n’était pas capable de suivre ! Il a fallu réagir...

Sommaire de l'article

La nécessaire amélioration du code d’osCommerce

Il a fallu regarder de très près le fonctionnement d’osCommerce et ré-écrire une part importante du code lié à index.php et à product_info.php. Le travail a consisté à :
- écrire un nouveau système de cache,
- optimiser certaines fonctions critiques,
- optimiser l’écriture de requêtes SQL critiques et en réduire le nombre.

Paralèlement, le système a migré, en 5 ans, d’un serveur mutualisé à un serveur dédié puissant et bien connecté à Internet.

Avant ce travail, le calcul d’une page du catalogue (index.php product_info.php) prenait de 150 à 250 ms. Après notre réécriture du code critique, le temps de calcul a été réduit à 20-25ms.

Pour traquer les délais de calculs et qualifier le travail réalisé, l’outil déterminant a été NuSphere PhpED, et particulièrement la fonction Profiler, dont voici un exemple :

Le profilage des temps de calcul, fonction par fonction

 

25 ms, c’est encore beaucoup, d’autant que lorsque la page n’existe pas dans le cache, les temps de calculs n’ont pas encore suffisament bénéficié des améliorations décrites.

Pour aller plus loin, il faudra en premier lieu travailler sur application_init.php qui charge, par l’intermédiaire d’une vingtaine de require(), à peu près tout le code d’osCommerce.

Le résultat : des pages 3 fois plus rapides à charger !

Avec un serveur qui commençait à être trop chargé, le temps de chargement d’une page par l’internaute dérivait dangereusement au-dessus de la seconde.

Le graphique ci-dessous, qui trace le temps de chargement moyen vu par Google, et tiré de Google Sitemap, montre que les travaux décrits précédemment, alors même que l’optimisation n’est pas terminée (le sera-t-elle jamais ?) ont divisé par 3 le temps de chargement, passé de 1500 ms à 500 ms :

Un temps de chargement des pages divisé par 3 (ordonnées en ms)

 

D’où la necessité de faire développer votre boutique par un professionnel expérimenté

Cette incapacité à tenir la charge est un problème connu des open-source de vente en ligne. Si osCommerce a bonne réputation avec son système de cache natif, on a vu que ce n’était pas suffisant. D... est réputé surcharger les serveurs (même pour des boutiques qui démarrent !) et P..., indigent en matière de cache, ne fait pas mieux.

Le commerçant qui pense pouvoir faire développer sa boutique à l’économie doit se préparer à de graves déconvenues : dès que le succès arrivera, le serveur plongera ! En fait le succès n’arrivera pas, parce que le temps de chargement des pages sera trop long pour les internautes pressés de feuilleter le catalogue. Développer une boutique à l’économie, c’est la certitude de l’échec et d’avoir à recommencer très vite.

Le succès passe par l’installation de la boutique par un professionnel, mais surtout son assistance tout au long de l’exploitation.

Si vous éprouvez des difficultés avec une boutique osCommerce, nous serons heureux de vous venir en aide.

En savoir plus :
- Des Web Services pour osCommerce.
- cherbourg-maquettes.com : bientôt 50 millions de pages vues !.
- Les composantes de BiDiShop.


Bertrand Degoy

Articles de cet auteur

Répondre à cet article
Accueil du site | Contact | Plan du site | Statistiques | visites : 16163
Espace privé | Site privé

Site réalisé avec SPIP 2.0.10 [14698] + BiDiWeb

     RSS fr RSSLe projet BiDiShops   ?

Copyright © 2007 Degoy net Consultants - Tous droits réservés
Degoy net Consultants - SARL au capital de 7500 € - SIRET : 502 478 365 00013 RCS Nanterre

photos sur degoy.net