FAQ Améliorer les performances

De Dolibarr Wiki.

Retour index
Documentation développeur

File Doc dev.png

Retour index
Documentation Utilisateur

File Doc user.png

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.


Contents

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:

# 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

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 limiter la recherche au début de la chaine rendant possible l'utilisation de l'index et obtenez une réponse immédiate.

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.

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 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.

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 regé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".

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).

Outils personnels
Autres langues
AnglaisEspagnol