FAQ Increase Performance
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: Voir la page 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:
# Cache for static resources (Enable expiration and set it to A2592000 = 1 month)
ExpiresActive On
ExpiresByType image/x-icon A2592000
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/css A2592000
ExpiresByType text/javascript A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType application/javascript A2592000
La encore les gains sont cumulatifs avec les caches précédents.
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
$dolibarr_main_db_type='mysqli';
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
Effciacité: ***
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 limiter la recherche au début de la chaine rendant possible l'utilisation de l'index et obtenez une réponse immédiate.
Autres solutions
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). 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.
Utilisation des versions précompressées des librairies Javascript
Efficacité: *
Prérequis: Requiert modification de la configuration Apache.
Principe: Ajouter dans Accueil-Configuration-Divers la constante MAIN_OPTIMIZE_SPEED. Si la valeur de cette constante a le bit 0 défini (Exemple: MAIN_OPTIMIZE_SPEED=1), Dolibarr utilisera les versions pré-compressées des scripts javascripts. A utiliser si votre connexion est lente. Le serveur Apache doit alors être configuré avec les lignes
AddType text/javascript .jgz
AddEncoding gzip .jgz
Ensuite vider son cache navigateur. Cette optimisation semble ne pas fonctionner en HTTPS (erreur de sécurité pour une raison indéterminée).
Compression à la volée des librairies et css
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.
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).