30,997
edits
(Created page with "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 ...") |
No edit summary |
||
| Line 1: | Line 1: | ||
Dolibarr | Dolibarr is a web application designed to have best response time. | ||
A lot of technologies are used but some of them are not enabled by default as they need some specific skills to use them. This is a list of all possible things you can do to increase Dolibarr speed. | |||
= | = Recommanded solutions = | ||
== | == Disable xdebug == | ||
Efficiency: ***** | |||
Principle: If php module xdebug is active, you should disable it. This module is a PHP feature to help developpers but it's useless for a production usage and slow down all PHP softwares. | |||
To know if this module is active, go on page '''Home-Setup-System info-PHP''' and do a search on '''xdebug'''. If you don't find anything, module is not active. If you find an occurence, module is active and can be disabled.. | |||
Enabling/Disabling such a module depends on your PHP system and OS. The most common way is to comment a line into you php.ini and restart web server. | |||
== | == Applicative cache via MemCached == | ||
Efficiency: ***** | |||
Principle: Go on page [[Module MemCached En]]. | |||
== | == PHP OPCODE cache == | ||
Efficiency: **** | |||
Principe: | Principe: Install an apache/php module that save PHP pages compilation result into a cache. Each page access will be then faster. | ||
For this, you can install any [http://en.wikipedia.org/wiki/List_of_PHP_accelerators PHP accelarator]. xcache is one of the recommanded solution. | |||
Note that caching occurs here on a different lelel than [[Module MemCached]], so gains are cumulative ! | |||
== | == HTTP cache of static pages == | ||
Efficiency: *** | |||
Principle: You can setup apache to activate explicit cache of static resources by adding following directives: | |||
<source lang="ini"> | <source lang="ini"> | ||
# Cache for static resources (Enable expiration and set it to A2592000 = 1 month) | # Cache for static resources (Enable expiration and set it to A2592000 = 1 month) | ||
| Line 39: | Line 39: | ||
ExpiresByType application/javascript A2592000 | ExpiresByType application/javascript A2592000 | ||
</source> | </source> | ||
Again, gain is cumulative with other previous caches. | |||
== | == Use mysqli driver instead of mysql == | ||
Efficiency: *** | |||
Principle: 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 | |||
<source lang="php"> | <source lang="php"> | ||
$dolibarr_main_db_type='mysqli'; | $dolibarr_main_db_type='mysqli'; | ||
| Line 50: | Line 50: | ||
Si la valeur vaut '''mysql''', changez la en '''mysqli''' qui donne de meilleures performances (gain de 30ms à chaque page). | Si la valeur vaut '''mysql''', changez la en '''mysqli''' qui donne de meilleures performances (gain de 30ms à chaque page). | ||
== | == Search on beginning of field == | ||
Effciency: *** | |||
Principle: 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. | |||
= | = Other solutions = | ||
== Cache applicatif via la Shared memory == | == Cache applicatif via la Shared memory == | ||
Efficiency: **** | |||
Pre-requisites: Using an Apache web server | |||
Principle: 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. | |||
== | == Use precompressed version of Javascript libraries == | ||
Efficiency: * | |||
Pre-requisites: Need to edit Aapche setup. | |||
Principle: 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 | Le serveur Apache doit alors être configuré avec les lignes | ||
<source lang="ini"> | <source lang="ini"> | ||
| Line 77: | Line 77: | ||
Cette optimisation semble ne pas fonctionner en HTTPS (erreur de sécurité pour une raison indéterminée). | Cette optimisation semble ne pas fonctionner en HTTPS (erreur de sécurité pour une raison indéterminée). | ||
== | == Compressing on the fly libraries and css == | ||
Efficiency: * | |||
Principle: 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. | |||
Note: 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). | |||
If value of constant has bit 0 set, Dolibarr will use the minifying and compressed version of javascript. Apache server must be configured to have the line | |||
<source lang="ini"> | |||
AddType text/javascript .jgz | |||
AddEncoding gzip .jgz | |||
</source> | |||
This feature seems to fails on HTTPS (security error for an unknown reason). | |||
- If value of constant has bit 1 set, Dolibarr will use shared memory to cache translation of language files. This means that only one language can be used (the one defined by first user that log after the Apache server reboot). Use [[Module MemCached EN]] that has no limitations instead of this option. | |||
- If value of constant has bit 2 defined (Example: MAIN_OPTIMIZE_SPEED=4), Dolibarr will return pages compressed into GZ (and if browser support it). This consume more CPU on server but reduce transfer time. Use it with slow connexion. | |||
- To have all optimizations enabled, you must set all bits (Example: MAIN_OPTIMIZE_SPEED=7). | |||
- Rem: To increase performance, you can also set your apache to activate cache of resources by adding the directives: | |||
<source lang="ini"> | |||
# 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 | |||
</source> | |||