L’impact de la performance sur le e-commerce
Chaque seconde de chargement supplémentaire réduit le taux de conversion de 7 %. Pour une boutique Prestashop générant 100 000 € par mois, passer de 4 à 2 secondes peut représenter 14 000 € de chiffre d’affaires supplémentaire.
Lueur Externe audite et optimise les performances des boutiques Prestashop de ses clients.
Optimisations serveur
PHP et OPcache
; php.ini optimisé pour Prestashop
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.revalidate_freq=0
; Augmenter les limites
memory_limit=512M
max_execution_time=300
realpath_cache_size=4096K
realpath_cache_ttl=600
MySQL / MariaDB
# my.cnf optimisé
[mysqld]
innodb_buffer_pool_size=2G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=2
query_cache_type=1
query_cache_size=128M
query_cache_limit=2M
tmp_table_size=256M
max_heap_table_size=256M
Redis pour les sessions et le cache
// app/config/parameters.php
'parameters' => [
'ps_cache_enable' => true,
'ps_caching' => 'CacheRedis',
'redis_server' => '127.0.0.1',
'redis_port' => 6379,
],
Optimisations applicatives
Identifier les modules lents
-- Mesurer le temps d'exécution des hooks
SELECT h.name AS hook_name, m.name AS module_name
FROM ps_hook_module hm
JOIN ps_hook h ON h.id_hook = hm.id_hook
JOIN ps_module m ON m.id_module = hm.id_module
WHERE m.active = 1
ORDER BY h.name;
Désactivez les modules inutilisés et remplacez les modules lents par des alternatives optimisées.
Optimiser les requêtes SQL
// Mauvais : requête N+1
foreach ($products as $product) {
$features = Product::getFeaturesStatic($product['id_product']);
}
// Bon : requête unique
$productIds = array_column($products, 'id_product');
$features = Db::getInstance()->executeS(
'SELECT pf.id_product, fl.name, fvl.value
FROM ' . _DB_PREFIX_ . 'feature_product pf
JOIN ' . _DB_PREFIX_ . 'feature_lang fl ON fl.id_feature = pf.id_feature
JOIN ' . _DB_PREFIX_ . 'feature_value_lang fvl ON fvl.id_feature_value = pf.id_feature_value
WHERE pf.id_product IN (' . implode(',', array_map('intval', $productIds)) . ')
AND fl.id_lang = ' . (int) $this->context->language->id
);
Optimisations front-end
Images
- Utiliser WebP avec fallback JPEG
- Lazy loading natif (
loading="lazy") - Dimensions explicites pour éviter le CLS
- Compression à 80 % de qualité
CSS et JavaScript
- Combiner et minifier les fichiers
- Charger le CSS critique en inline
- Différer le JavaScript non essentiel
- Supprimer les fichiers CSS/JS des modules désactivés
CDN et cache HTTP
# Configuration Nginx avec cache
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2|svg|webp)$ {
expires 1y;
add_header Cache-Control "public, immutable";
add_header Vary "Accept-Encoding";
}
# Compression Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 1000;
Monitoring
Mettez en place un monitoring continu :
- Google PageSpeed Insights (score Lighthouse)
- WebPageTest (waterfall détaillé)
- New Relic ou Blackfire (profiling PHP)
- Slow query log MySQL
Conclusion
L’optimisation des performances Prestashop est un travail continu qui touche le serveur, l’application et le front-end. Lueur Externe propose des audits de performance complets et des optimisations sur mesure pour maximiser vos conversions.