FAQ Améliorer les performances

Dolibarr est une application Web qui a fait l'objet d'une conception poussée pour obtenir un temps de réponse le plus optimisé possible. De nombreuses technologies sont mises en oeuvre mais certaines ne sont pas actives par défaut car nécessite des compétences ou habilitations particulières pour les mettre en oeuvre. Voici toutes les choses que vous pouvez mettre en oeuvre pour améliorer encore plus la réactivité de l'application.

= Solutions recommandées =

Désactivation de xdebug
Efficacité: *****

Principe: Si le module php xdebug est actif, il vous faut le désactiver. Ce module est une fonctionnalité de PHP qui sert aux développeurs mais ralentit fortement le fonctionnement de toute application PHP. Pour savoir si ce module est actif, aller dans la pages Accueil-Configuration-Infos systèmes-PHP et faites une recherche sur xdebug. Si vous ne trouvez rien, le module n'est pas actif. Si vous trouvez une occurrence, il est actif et peut être désactivé. Son activation/désactivation dépend de votre système PHP et OS mais le plus souvent on le désactive en commentant une ligne dans le fichier php.ini

Cache applicatif via MemCached
Efficacité: *****

Principe: Installer un serveur de cache Memcached et le Module MemCached.

Cache PHP OPCODE
Efficacité: ****

Principe: Installer un module apache/php qui met en cache la compilation de vos pages PHP. A chaque accès, une page déjà accéder sera plus rapide d'accès. Pour cela vous pouvez installer n'importe quel accélérateur PHP. xcache fait partie des solutions recommandées. Notons que ce cache joue ici sur un niveau différent que le Module MemCached, les gains sont donc cumulatifs !

Cache HTTP des pages statiques
Efficacité: ***

Principe: Vous pouvez configurer apache pour activer le cache explicite des ressources statiques en ajoutant les directives: La encore les gains sont cumulatifs avec les caches précédents.

Après avoir ajouté cela, vous devez recharger la configuration du serveur web mais également vider le cache local du navigateur afin de forcer ce dernier à redemander la ressource et récupérer le nouvel entête.

Compression des ressources par Apache
Efficacité: ***

Principe: Vous pouvez configurer Apache pour activer la compression des ressources renvoyées par le serveur grâce aux directives suivantes:

Après avoir ajouté cela, vous devez recharger la configuration du serveur web mais également vider le cache local du navigateur afin de forcer ce dernier à redemander la ressource et récupérer le nouvel entête.

Utilisation du driver mysqli plutôt que mysql
Efficacité: ***

Principe: Si vous utilisez une base de données Mysql, vérifiez dans votre fichier de configuration Dolibarr htdocs/conf/conf.php que vous avez bien la ligne Si la valeur vaut mysql, changez la en mysqli qui donne de meilleures performances (gain de 30ms à chaque page).

Recherche sur début de champ
Efficacité: ***

Principe: Si vous avez activé dans le module Produit la recherche par "autocomplete" et si la liste met du temps à apparaitre à chaque saisie de caractère, c'est que vous avez un nombre important de produit. La recherche se faisant n'importe ou dans le texte, l'index de base de donnée ne peut être utilisé. En ajoutant la constante PRODUCT_DONOTSEARCH_ANYWHERE à 1 dans Accueil-Configuration-Divers, vous limitez la recherche au début de la chaine rendant possible l'utilisation de l'index et obtiendrez une réponse immédiate.

Désactivation des ajax combo
Efficacité: ***

Si vous avez un largen nombre de tiers ou produits (> 5000), vous pouvez désactiver la fonctionnalité autocomplete sur la liste des tiers ou produits en positionnant la contante MAIN_DISABLE_AJAX_COMBOX à 1 dans Accueil-Configuration-Autre (avec Dolibarr v3.6.0+).

Utilisation d'un navigateur récent
Efficacité: ***

Principe: De plus en plus de fonctionnalités sont basés sur les technologies Ajax ou javascript afin d'offrir une ergonomie moderne. Ces technologies, ont une part non négligeable dans le temps d'affichage de certaines pages et sont beaucoup mieux exploités avec un navigateur Web récent. Les écarts en performance d'une version à l'autre sont parfois très importante, aussi pensez à utiliser un navigateur web optimisé et en version la plus récente possible (Firefox, Chrome, Safari ou Opera). Eviter IE ou autre navigateurs exotiques.

Mise à jour de statistiques de base
Efficacité: **

Principe: Si vous avez une base de donnée volumineuse (plus de 100 000 enregistrements), vérifiez que les statistiques de vos données sont à jour. Ceci requiert un accès administrateur à la base de donnée et des connaissances en administration de base. Consulter le manuel de la base de donnée sur le sujet "mise à jour des statistiques" pour cela.

= Autres solutions = Toutes les solutions ici sont catégorisées à part dans ce chapitre "Autres solutions" car elles ne sont pas recommandées. Toutes les solutions suivantes peuvent nécessiter des connaissances techniques avancées, peuvent être instables, non supportées ou peuvent rendre certaines fonctionnalités inopérationnelles... mais elles existent, aussi ne les employez que si vous savez ce que vous faites !

Cache applicatif via la Shared memory
Efficacité: ****

Prérequis: Utilisation du serveur web Apache

Principe: Ajouter dans Accueil-Configuration-Divers la constante MAIN_OPTIMIZE_SPEED. Si la valeur de cette constante a le bit 1 défini (Exemple: MAIN_OPTIMIZE_SPEED=2), la shared memory de votre OS est utilisée pour mettre en cache les fichiers lang, mais cela implique aussi que tout l'interface ne sera visible que dans une seule langue, celle du premier qui se connecte après un redémarrage du serveur web (qui charge les fichiers langues en cache). De plus, la shared memory peut s'avérer instable sur certains OS (Windows). Utiliser plutôt le Module MemCached pour une optimisation par un cache applicatif qui n'a aucune de ces contraintes et est encore plus performant, cette action sera alors inutile.

Désactiver le génération des PDF "à la volée"
Efficacité: **

Vous pouvez ajouter la constante MAIN_DISABLE_PDF_AUTOUPDATE dans Accueil - Configuration - Autre.

Ceci désactivera la régénération du PDF à chaque fous que vous modifier un élément (facture, commande, ...). La génération du PDF aura lieu uniquement sur click du bouton "Générer".

Compression des ressources par Dolibarr
Efficacité: **

Principe: Ajouter dans Accueil-Configuration-Divers la constante MAIN_OPTIMIZE_SPEED. Si la valeur de cette constante a le bit 2 défini (Exemple: MAIN_OPTIMIZE_SPEED=4), Dolibarr renverra les pages compressés en GZ (et si le navigateur le supporte). Cela consomme plus de CPU sur le serveur mais réduit le temps de transfert. Préferrez toutefois la compression configuré par Apache (voir plus haut). Ne pas activez les 2 méthodes en même temps.

Désactiver la fonction Canvas
Efficacité: *

Principe: Ajouter dans Accueil-Configuration-Divers la constante MAIN_DISABLE_CANVAS à la valeur 1. Ceci désactivera les fonctions de gestion de canvas qui peut etre utilisé par certains modules externes et économisera une requête à la base à chaque fois que vous accédez à la fiche d'un objet. Cependant, si un module externe utilise cette fonction de canvas, ceci rendra le module défectueux. Si vous n'avez installez aucun module complémentaire externe, il n'y a pas de risques.

Rem: Pour obtenir la totalité des optimisations utilisant MAIN_OPTIMIZE_SPEED, il faut activer tous les bits (Exemple: MAIN_OPTIMIZE_SPEED=7 donc 1+2+4 contient le bit 0, 1 et 2).