Performance Joomla

Optimiser son site Joomla pour un affichage rapide des pages et une bonne réactivité de l'interface est devenu une opération essentielle. Tout comme proposer une version mobile de son site via une version dédiée ou Responsive, proposer à vos mobinautes un site rapide est l'une des clés de son succès. N'oubliez pas que les mobinautes peuvent représenter la majorité de votre trafic, jetez d'ailleurs un oeil à Google Analytics pour faire un point sur ce sujet.

Un site rapide est également une excellente chose pour vos utilisateurs Desktop qui y voient un gage de professionnalisme et une expérience utilisateur enrichie.

Cette optimisation doit se faire à plusieurs niveaux, du choix de l'hébergement jusque dans l'administration Joomla en passant par la configuration serveur voire l'utilisation d'une solution externe comme un CDN. Voici une liste des actions à mener qui devrait donner un bon coup de boost à votre site Internet Joomla.

Les outils pour réaliser vos tests

Beaucoup d'outils existent sur le marché, j'en relève 3 :

  • Google page speed - L'outil de Google analyse votre site Web et est certainement le plus simple à utiliser
  • Pingdom - L'outil de Pingdom rentre dans le détail et analyse ressources par ressources
  • DareBoost - La solution qui monte et qui vous propose des rapports PDF complets que vous pouvez stocker ou mettre à disposition de vos clients (Et leur site est le plus rapide que je connaisse ! :-) )

Le choix du serveur - L'hébergeur & l'hébergement adéquat

Je ne le répèterais jamais assez, l'hébergement est la base des performances de votre Joomla. Lisez ce sujet pour en savoir plus et faites le bon choix : Quel hébergeur et hébergement Joomla faut-il choisir ?

Compression côté serveur avec GZip

GZip est une méthode qui permet de compresser les ressources envoyées au client (=le navigateur) par le serveur. La compression rend le travail côté serveur plus important, mais la compression est efficace et rend les pages beaucoup plus légères. Vous pouvez activer cette option en allant dans la configuration générale de Joomla Système => Configuration => (Onglet) Serveur => Compression GZIP, et mettez Oui.

Capture d'écran

Notez que votre serveur doit permettre l'utilisation de cette fonctionnalité, c'est le cas avec l'hébergeur SiteGround.

L'utilisation du cache Joomla...

La mise en cache est une approche simple mais très efficace pour améliorer les performances. La mise en cache peut être exécutée sur le serveur ou côté client (cf. ci-dessous La mise en cache Navigateur), et vous avez le contrôle des deux côtés.

L’activation du cache côté Serveur avec Joomla! est très simple, elle permet d'éviter que Joomla! ne re-génère à chaque fois la page HTML en stockant une copie de celle-ci dans le répertoire /cache. L'affichage est donc beaucoup plus rapide du fait du plus faible nombre de processus à exécuter.
Allez dans Extensions => Plugins. Cherchez le plugin Système - Cache, et assurez-vous que ce plugin soit activé.

Capture d'écran

Ensuite, allez dans le Système => Configuration => (onglet) Système, et choisissez Cache conservateur dans Paramètres du cache. Le cache conservateur est conseillé pour des raisons de stabilité et est suffisant pour la plupart des sites. Vous pouvez utiliser le mode Cache progressif si vous n'avez pas de bonnes performances mais à ne pas utiliser sur de gros sites.

La durée du cache est à votre convenance, plus votre site se met à jour (commentaires, nouveaux contenus, forums, ...) plus la durée devrait être courte. Pour 24 heures de cache, mettez 1440 par exemple.

Capture d'écran

 ...ou mieux : de SuperCacher :-)

Si vous avez la chance d'être chez SiteGround, vous pouvez utiliser leur solution de mise en cache dynamique de niveau 2 sous SuperCacher. Cette solution a été développée pour Joomla, et demande d'ailleurs l'installation d'un plugin. Si vous l'utilisez, vous n'avez pas besoin du cache de Joomla (désactivez-le) qui est lui aussi dynamique. Cela ferait en effet doublon.

Capture d'écran

Voici une vidéo qui vous présente tout le système de cache de SuperCacher :

Généralement, SuperCacher est plus efficace que le cache de Joomla, mais testez les deux. A noter que si vous souhaitez utiliser Memcached, il faudra utiliser le cache de Joomla.

L'alternative JotCache

JotCache est un composant Joomla se substituant au cache natif de Joomla. Celui-ci apporte de nombreuses fonctionnalités complémentaires comme notamment la possibilité de gérer le cache page par page. A utiliser si vous avez besoin d'une gestion fine de votre cache ou si le cache de Joomla provoque des instabilités.

L'implémentation de Memcached

Memcached est particulièrement intéressant si vous avez besoin de gagner du temps de réponse au niveau des requêtes. Le cas typique est quand un utilisateur est connecté à votre site Joomla et ne peut donc pas bénéficier du cache dynamique. Dans ce contexte, Memcached devient alors indispensable si vous souhaitez proposer un temps de réponse décent à vos utilisateurs connectés.

Voici comme configurer Memcached sous Joomla, toujours dans la configuration générale Système => Configuration => (onglet) Système:

Capture d'écran

Si vous avez la chance d'être chez SiteGround, voici comment déployer Memcached :

Capture d'écran

A noter que 127.0.0.1 = localhost

Optimisation des images du site

Une image légère est une image qui se charge rapidement. L'excellent ImageRecyle vous permet de compresser vos images et même de manière automatique grâce à leur composant Joomla. Essayez également de respecter les dimensions du conteneur dans lequel se trouve l'image et ainsi éviter que le navigateur ne doive redimensionner l'image.
Pour plus de détails, vous pouvez consulter notre guide d'optimisation des images pour Joomla.

Gestion des extensions

Choix des extensions

Le choix des extensions peut avoir un impact non-négligeable sur les performances de votre Joomla. Quelques conseils :

  • Essayez de vous limiter à un nombre minimum d'extensions, ou du moins de plugins
  • Privilégiez les extensions professionnelles (souvent payantes)
  • Faites les mises à jour de vos extensions, bien souvent leurs auteurs optimisent le code

Suppression des extensions inutiles

Faites le tour de vos extensions et notamment de vos plugins, même nativement installés, et désinstallez-les quand c'est possible. Au pire, désactivez-les.
Par ailleurs, si vous connaissez un peu CPanel et PhpMyadmin, lorsque vous supprimez une extension importante (un composant), nous conseillons de s'assurer que ses tables sont bien supprimées. Il est inutile de surcharger votre base de données avec des informations qui ne sont plus utilisées.

La version de PHP

Utilisez la dernière version de PHP, ou au moins PHP 7 compatible Joomla depuis la version 3.5.0. Le gain en terme de temps de réponse serveur est en moyenne de 40%, ce qui est particulièrement intéressant quand les pages se mettent en cache (ou se re-cache) ou que l'internaute navigue connecté au site.

La mise en cache Navigateur

Concernant l’optimisation côté client (=navigateur), elle se concentre principalement sur les images, les fichiers CSS et JavaScript, qui se téléchargent à chaque fois que vous visitez une page Web. Parce que la plupart de ces fichiers ne sont modifiés que de temps en temps, nous pouvons demander au client de mettre en cache ces fichiers.

Pour activer le cache côté client, nous mettons à jour le fichier .htaccess à la racine de Joomla. Cela indiquera comment le navigateur doit stocker les fichiers dans sa mémoire cache, au lieu de les télécharger à chaque visite. A noter que le bout de code ci-dessous met également en cache les audios, les vidéos et les fonts (polices).

# Enable expiration control
ExpiresActive On
# Default expiration: 1 hour after request
ExpiresDefault "now plus 1 hour"
# CSS and JS expiration: 1 week after request
ExpiresByType text/css "now plus 1 week"
ExpiresByType application/javascript "now plus 1 week"
ExpiresByType application/x-javascript "now plus 1 week"

# Image files expiration: 1 month after request
ExpiresByType image/bmp "now plus 1 month"
ExpiresByType image/gif "now plus 1 month"
ExpiresByType image/jpeg "now plus 1 month"
ExpiresByType image/jp2 "now plus 1 month"
ExpiresByType image/pipeg "now plus 1 month"
ExpiresByType image/png "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"
ExpiresByType image/tiff "now plus 1 month"
ExpiresByType image/vnd.microsoft.icon "now plus 1 month"
ExpiresByType image/x-icon "now plus 1 month"
ExpiresByType image/ico "now plus 1 month"
ExpiresByType image/icon "now plus 1 month"
ExpiresByType text/ico "now plus 1 month"
ExpiresByType application/ico "now plus 1 month"
ExpiresByType image/vnd.wap.wbmp "now plus 1 month"
ExpiresByType application/vnd.wap.wbxml "now plus 1 month"
ExpiresByType application/smil "now plus 1 month"

# Audio files expiration: 1 month after request
ExpiresByType audio/basic "now plus 1 month"
ExpiresByType audio/mid "now plus 1 month"
ExpiresByType audio/midi "now plus 1 month"
ExpiresByType audio/mpeg "now plus 1 month"
ExpiresByType audio/x-aiff "now plus 1 month"
ExpiresByType audio/x-mpegurl "now plus 1 month"
ExpiresByType audio/x-pn-realaudio "now plus 1 month"
ExpiresByType audio/x-wav "now plus 1 month"

# Movie files expiration: 1 month after request
ExpiresByType application/x-shockwave-flash "now plus 1 month"
ExpiresByType x-world/x-vrml "now plus 1 month"
ExpiresByType video/x-msvideo "now plus 1 month"
ExpiresByType video/mpeg "now plus 1 month"
ExpiresByType video/mp4 "now plus 1 month"
ExpiresByType video/quicktime "now plus 1 month"
ExpiresByType video/x-la-asf "now plus 1 month"
ExpiresByType video/x-ms-asf "now plus 1 month"

##fonts

# Add correct content-type for fonts
AddType application/vnd.ms-fontobject .eot
AddType application/x-font-ttf .ttf
AddType application/x-font-opentype .otf
AddType application/x-font-woff .woff
AddType application/x-font-woff .woff2
AddType image/svg+xml .svg

# Font files expiration: 1 month after request
ExpiresByType application/vnd.ms-fontobject "now plus 1 month"
ExpiresByType application/x-font-ttf "now plus 1 month"
ExpiresByType application/x-font-opentype "now plus 1 month"
ExpiresByType application/x-font-woff "now plus 1 month"
ExpiresByType application/font-woff2 "now plus 1 month"
ExpiresByType image/svg+xml "now plus 1 month"

Compression additionnelle

En plus de la compression Gzip que nous avons vu précédemment, nous pouvons ajouter de la compression de fichiers en textes, tels que Javascript et CSS. Cette action va compresser les fichiers en textes qui sont envoyés au navigateur. Il suffit d'ajouter la directives suivante au fichier .htaccess :

# AddOutputFilterByType is now deprecated by Apache. Use mod_filter in the future.
AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript

A noter que cette directive est maintenant la plupart du temps obsolète.

Minifier & Merger ses fichiers

Les fichiers CSS et JS sont généralement affichés ligne par ligne, ce qui facilite leur lecture, rend la construction des sites web plus efficace, et permet d’afficher des commentaires pour déboguer. Toutefois, le navigateur peut utiliser le même fichier avec une seule ligne, en enchaînant toutes les lignes à la suite et sans commentaires (qui ne sont utiles que pour les êtres humains). Cette réduction Minify permet de diminuer la taille du fichier et de rendre leur téléchargement plus rapide. Vous verrez qu’on économise assez peu de Ko pour une page, mais si vous commencez à avoir un certain trafic, vous économiserez des centaines de méga-octets de téléchargement sur votre serveur.

Merger permet d’unifier tous les fichiers dans un seul fichier. Encore une fois, cela peut sembler être une action banale, parce que la taille de téléchargement est la même, mais pour chaque demande de fichier le serveur utilise des ressources en faisant une requête, donc télécharger 10 fichiers n'est pas pareil que d’en télécharger un seul, même si le poids est le même. Cette fusion permet d'économiser des ressources et d'optimiser le processus client de réception des données par le serveur.

Vous pouvez utiliser les plugins Joomla JCH Optimize, Script Merge, Jbetolo ou encore les fonctionnalités parfois incluses dans le Framework de votre template Joomla.

Exclure les fichiers JS & CSS inutiles

Parfois, certains fichiers CSS / JS se chargent inutilement. Utilisez le plugin JS / CSS Control pour exclure ces fichiers-là, notamment de la page d'accueil. En effet, on peut gérer, avec ce plug in, le chargement ou non des fichiers JS ou CSS page par page (zone "Limit Execution" dans l'image ci-dessous). Il faut activer le mode "debug" du plug in pour connaitre la façon de renseigner cette zone pour chaque page.

Capture d'écran

Bloquer un maximum de trafic venant de robots

Les robots et autres crawlers représentent aujourd'hui environ 50% du trafic mondial, mais avec une part qui peut monter jusqu'à 85% pour les sites ayant moins de 1000 visiteurs / jours, autant vous dire que vous vous faites bien squatter votre bande passante ! :-) Et qui dit bande passante dit inévitablement sollicitations serveur donc baisses de perfomance.

Par conséquent, voici une liste qui date un peu (mais toujours aussi efficace) des robots, et surtout badbots, les plus connus :

# 2013 UA BLACKLIST [1/3]
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_HOST} !^(127\.0\.0\.0|localhost) [NC]
	RewriteCond %{HTTP_USER_AGENT} (\<|\>|\'|\$x0E|\%0A|\%0D|\%27|\%3C|\%3E|\%00|\@\$x|\!susie|\_irc|\_works|\+select\+|\+union\+|\<\?|1\,\1\,1\,|3gse|4all|4anything|5\.1\;\ xv6875\)|59\.64\.153\.|85\.17\.|88\.0\.106\.|a\_browser|a1\ site|abac|abach|abby|aberja|abilon|abont|abot|accept|access|accoo|accoon|aceftp|acme|active|address|adopt|adress|advisor|agent|ahead|aihit|aipbot|alarm|albert|alek|alexa\ toolbar\;\ \(r1\ 1\.5\)|alltop|alma|alot|alpha|america\ online\ browser\ 1\.1|amfi|amfibi|anal|andit|anon|ansearch|answer|answerbus|answerchase|antivirx|apollo|appie|arach|archive|arian|aboutoil|asps|aster|atari|atlocal|atom|atrax|atrop|attrib|autoh|autohot|av\ fetch|avsearch|axod|axon|baboom|baby|back|baid|bali|bandit|barry|basichttp|batch|bdfetch|beat|beaut|become|bee|beij|betabot|biglotron|bilgi|binlar|bison|bitacle|bitly|blaiz|blitz|blogl|blogscope|blogzice|bloob|blow|bord|bond|boris|bost|bot\.ara|botje|botw|bpimage|brand|brok|broth|browseabit|browsex|bruin|bsalsa|bsdseek|built|bulls|bumble|bunny|busca|busi|buy|bwh3|cafek|cafi|camel|cand|captu|casper|catch|ccbot|ccubee|cd34|ceg|cfnetwork|cgichk|cha0s|chang|chaos|char|char\(|chase\ x|check\_http|checker|checkonly|checkprivacy|chek|chill|chttpclient|cipinet|cisco|cita|citeseer|clam|claria|claw|cloak|clshttp|clush|coast|cmsworldmap|code\.com|cogent|coldfusion|coll|collect|comb|combine|commentreader|common|comodo|compan|compatible\-|conc|conduc|contact|control|contype|conv|cool|copi|copy|coral|corn|cosmos|costa|cowbot|cr4nk|craft|cralwer|crank|crap|crawler0|crazy|cres|cs\-cz|cshttp|cuill|CURI|curl|curry|custo|cute|cyber|cz3|czx|daily|dalvik|daobot|dark|darwin|data|daten|dcbot|dcs|dds\ explorer|deep|deps|detect|dex|diam|diavol|diibot|dillo|ding|disc|disp|ditto|dlc|dotbot|drag|drec|dsdl|dsok|dts|duck|dumb|eag|earn|earthcom|easydl|ebin|echo|edco|egoto|elnsb5|email|emer|empas|encyclo|enfi|enhan|enterprise\_search|envolk|erck|erocr|eventax|evere|evil|ewh|exac|exploit|expre|extra|eyen|fang|fast|fastbug|faxo|fdse|feed24|feeddisc|feedfinder|feedhub|fetch|filan|fileboo|fimap|find|firebat|firedownload\/1\.2pre\ firefox\/3\.6|firefox\/0|firs|flam|flash|flexum|flicky|flip|fly|focus|fooky|forum|forv|fost|foto|foun|fount|foxy\/1\;|free|friend|frontpage|fuck|fuer|futile|fyber|gais|galbot|gbpl|gecko\/2001|gecko\/2002|gecko\/2006|gecko\/2009042316|gener|geni|geo|geona|geth|getr|getw|ggl|gira|gluc|gnome|go\!zilla|goforit|goldfire|gonzo|google\ wireless|gosearch|got\-it|gozilla|grab|graf|greg|grub|grup|gsa\-cra|gsearch|gt\:\:www|guidebot|guruji|gyps|haha|hailo|harv|hash|hatena|hax|head|helm|herit|heritrix|hgre|hippo|hloader|hmse|hmview|holm|holy|hotbar\ 4\.4\.5\.0|hpprint|href\s|httpclient|httpconnect|httplib|httrack|human|huron|hverify|hybrid|hyper|ia_archiver|iaskspi|ibm\ evv|iccra|ichiro|icopy|ics\)|ida|ie\/5\.0|ieauto|iempt|iexplore\.exe|ilium|ilse|iltrov|indexer|indy|ineturl|infonav|innerpr|inspect|insuran|intellig|interget|internet\_explorer|internet\x|intraf|ip2|ipsel|irlbot|isc\_sys|isilo|isrccrawler|isspi|jady|jaka|jam|jenn|jet|jiro|jobo|joc|jupit|just|jyx|jyxo|kash|kazo|kbee|kenjin|kernel|keywo|kfsw|kkma|kmc|know|kosmix|krae|krug|ksibot|ktxn|kum|labs|lanshan|lapo|larbin|leech|lets|lexi|lexxe|libby|libcrawl|libcurl|libfetch|libweb|light|linc|lingue|linkcheck|linklint|linkman|lint|list|litefeeds|livedoor|livejournal|liveup|lmq|loader|locu|london|lone|loop|lork|lth\_|lwp|mac\_f|magi|magp|mail\.ru|main|majest|mam|mama|mana|marketwire|masc|mass|mata|mvi|mcbot|mecha|mechanize|mediapartners|metadata|metalogger|metaspin|metauri|mete|mib\/2\.2|microsoft\.url|microsoft\_internet\_explorer|mido|miggi|miix|mindjet|mindman|miner|mips|mira|mire|miss|mist|mizz|mj12|mlbot|mlm|mnog|moge|moje|mooz|more|mouse|mozdex) [NC]
	RewriteRule .* - [G]
</IfModule>

# 2013 UA BLACKLIST [2/3]
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_USER_AGENT} (mozilla\/0|mozilla\/1|mozilla\/4\.61\ \[en\]|mozilla\/firefox|mpf|msie\ 2|msie\ 3|msie\ 4|msie\ 5|msie\ 6\.0\-|msie\ 6\.0b|msie\ 7\.0a1\;|msie\ 7\.0b\;|msie6xpv1|msiecrawler|msnbot\-media|msnbot\-products|msnptc|msproxy|msrbot|musc|mvac|mwm|my\_age|myapp|mydog|myeng|myie2|mysearch|myurl|nag|name|naver|navr|near|netants|netcach|netcrawl|netfront|netinfo|netmech|netsp|netx|netz|neural|neut|newsbreak|newsgatorinbox|newsrob|newt|next|nice|nikto|nimb|ninja|ninte|nog|noko|nomad|norb|note|npbot|nuse|nutch|nutex|nwsp|obje|ocel|octo|odi3|oegp|offby|offline|omea|omg|omhttp|onfo|onyx|openf|openssl|openu|opera\ 2|opera\ 3|opera\ 4|opera\ 5|opera\ 6|opera\ 7|orac|orbit|oreg|osis|our|outf|owl|p3p\_|page2rss|pagefet|pansci|parser|patw|pavu|pb2pb|pcbrow|pear|peer|pepe|perfect|perl|petit|phoenix\/0\.|phras|picalo|piff|pig|pingd|pipe|pirs|plag|planet|plant|platform|playstation|plesk|pluck|plukkie|poe\-com|poirot|pomp|post|postrank|powerset|preload|press|privoxy|probe|program\_shareware|protect|protocol|prowl|proxie|psbot|pubsub|puf|pulse|punit|purebot|purity|pyq|pyth|query|quest|qweer|radian|rambler|ramp|rapid|rawdog|rawgrunt|reap|reeder|refresh|reget|relevare|repo|requ|request|rese|retrieve|rip|rix|rma|roboz|rocket|rogue|rpt\-http|rsscache|ruby|ruff|rufus|rv\:0\.9\.7\)|salt|sample|sauger|savvy|sbcyds|sbider|sblog|sbp|scagent|scan|scej\_|sched|schizo|schlong|schmo|scorp|scott|scout|scrawl|screen|screenshot|script|seamonkey\/1\.5a|search17|searchbot|searchme|sega|semto|sensis|seop|seopro|sept|sezn|seznam|share|sharp|shaz|shell|shelo|sherl|shim|shopwiki|silurian|simple|simplepie|siph|sitekiosk|sitescan|sitevigil|sitex|skam|skimp|skygrid|sledink|sleip|slide|sly|smag|smurf|snag|snapbot|snapshot|snif|snip|snoop|sock|socsci|sogou|sohu|solr|some|soso|spad|span|spbot|speed|sphere|spin|sproose|spurl|sputnik|spyder|squi|sqwid|sqworm|ssm\_ag|stack|stamp|statbot|state|steel|stilo|strateg|stress|strip|style|subot|such|suck|sume|sunos\ 5\.7|sunrise|superbot|superbro|supervi|surf4me|surfbot|survey|susi|suza|suzu|sweep|swish|sygol|synapse|sync2it|systems|szukacz|tagger|tagoo|tagyu|take|talkro|tamu|tandem|tarantula|tbot|tcf|tcs\/1|teamsoft|tecomi|teesoft|teleport|telesoft|tencent|terrawiz|test|texnut|thomas|tiehttp|timebot|timely|tipp|tiscali|titan|tmcrawler|tmhtload|tocrawl|todobr|tongco|toolbar\;\ \(r1|topic|topyx|torrent|track|translate|traveler|treeview|tricus|trivia|trivial|true|tunnel|turing|turnitin|tutorgig|twat|tweak|twice|tygo|ubee|uchoo|ultraseek|unavail|unf|universal|unknown|upg1|urlbase|urllib|urly|user\-agent\:|useragent|usyd|vagabo|valet|vamp|vci|veri\~li|versus|vikspider|virtual|visual|void|voyager|vsyn|w0000t|w3search|walhello|walker|wand|waol|wavefire|wbdbot|weather|web\.ima|web2mal|webarchive|webbot|webcat|webcor|webcorp|webcrawl|webdat|webdup|webgo|webind|webis|webitpr|weblea|webmin|webmoney|webp|webql|webrobot|webster|websurf|webtre|webvac|webzip|wells|wep\_s|wget|whiz|widow|win67|windows\-rss|windows\ 2000|windows\ 3|windows\ 95|windows\ 98|windows\ ce|windows\ me|winht|winodws|wish|wizz|worio|works|world|worth|wwwc|wwwo|wwwster|xaldon|xbot|xenu|xirq|y\!tunnel|yacy|yahoo\-mmaudvid|yahooseeker|yahooysmcm|yamm|yand|yandex|yang|yoono|yori|yotta|yplus\ |ytunnel|zade|zagre|zeal|zebot|zerx|zeus|zhuaxia|zipcode|zixy|zmao|zmeu|zune) [NC]
	RewriteRule .* - [G]
</IfModule>

# 2013 UA BLACKLIST [3/3] (pentag0)
<IfModule mod_rewrite.c>
	RewriteCond %{HTTP_USER_AGENT} (black\ hole|titan|webstripper|netmechanic|cherrypicker|emailcollector|emailsiphon|webbandit|emailwolf|extractorpro|copyrightcheck|crescent|wget|sitesnagger|prowebwalker|cheesebot|teleport|teleportpro|miixpc|telesoft|website\ quester|webzip|moget/2\.1|webzip/4\.0|websauger|webcopier|netants|mister\ pix|webauto|thenomad|www-collector-e|rma|libweb/clshttp|asterias|httplib|turingos|spanner|infonavirobot|harvest/1\.5|bullseye/1\.0|mozilla/4\.0\ \(compatible;\ bullseye;\ windows\ 95\)|crescent\ internet\ toolpak\ http\ ole\ control\ v\.1\.0|cherrypickerse/1\.0|cherrypicker\ /1\.0|webbandit/3\.50|nicerspro|microsoft\ url\ control\ -\ 5\.01\.4511|dittospyder|foobot|webmasterworldforumbot|spankbot|botalot|lwp-trivial/1\.34|lwp-trivial|wget/1\.6|bunnyslippers|microsoft\ url\ control\ -\ 6\.00\.8169|urly\ warning|wget/1\.5\.3|linkwalker|cosmos|moget|hloader|humanlinks|linkextractorpro|offline\ explorer|mata\ hari|lexibot|web\ image\ collector|the\ intraformant|true_robot/1\.0|true_robot|blowfish/1\.0|jennybot|miixpc/4\.2|builtbottough|propowerbot/2\.14|backdoorbot/1\.0|tocrawl/urldispatcher|webenhancer|tighttwatbot|suzuran|vci\ webviewer\ vci\ webviewer\ win32|vci|szukacz/1\.4|queryn\ metasearch|openfind\ data\ gathere|openfind|xenu\'s\ link\ sleuth\ 1\.1c|xenu's|zeus|repomonkey\ bait\ &\ tackle/v1\.01|repomonkey|zeus\ 32297\ webster\ pro\ v2\.9\ win32|webster\ pro|erocrawler|linkscan/8\.1a\ unix|keyword\ density/0\.9|kenjin\ spider|cegbfeieh) [NC]
	RewriteRule .* - [G]
</IfModule>

SetEnvIfNoCase User-Agent .*rogerbot.* bad_bot
SetEnvIfNoCase User-Agent .*exabot.* bad_bot
SetEnvIfNoCase User-Agent .*mj12bot.* bad_bot
SetEnvIfNoCase User-Agent .*dotbot.* bad_bot
SetEnvIfNoCase User-Agent .*gigabot.* bad_bot
SetEnvIfNoCase User-Agent .*ahrefsbot.* bad_bot
SetEnvIfNoCase User-Agent .*sitebot.* bad_bot

Ce script est à placer dans voter fichier .htaccess.

Le fait de bloquer certains badbots vous apportera en plus ici un gain en sécurité.

Attention, cette liste peut bloquer des outils d'analyse de site, des flux externe, ... qui se verront retourner une erreur 410.
 

Utiliser un CDN

La mise en place d'un CDN est l'occasion de faire une pierre 4 coups pour les raisons suivantes :

  • Vous proposez un temps de réponse minimum grâce à des serveurs CDN ultra-optimisés
  • Vous bénéficiez d'un GZippage ultra-optimisé
  • Vous délivrez vos assets (images, JS, CSS, PDF,...) plus rapidement à vos internautes situés près d'un des serveurs du provider CDN
  • Vous soulagez votre propre serveur avec moins de requêtes.

Je vous conseille l'excellent service KeyCDN couplé au plugin de Regular Labs : CDN for Joomla! , très facilement configurable :

Capture d'écran

Pour aller encore plus loin

Optimisation de la base de données

Se rendre dans la base de données et notamment dans les tables contenant beaucoup de lignes pour y faire un OPTIMIZE TABLEet un ANALYZE TABLE, est un bon moyen de s'assurer que les tables de sa base de données donnent leur maximum.

Capture d'écran

Optimisation des requêtes SQL

Vous pouvez jouer sur le Query Cache de MySQL pour optimiser le temps de réponse de MySQL. Quelques explications ici.

A noter que si vous êtes chez SiteGround, vous pouvez leur en faire la demande par le support, ils sont généralement d'accord pour le faire pour vous.

Si vous voyez autre chose, n'hésitez pas à le préciser dans les commentaires. Si vous souhaitez faire optimiser votre site Joomla, n'hésitez pas à me contacter

L'auteur : un expert à votre service
Jean-Charles Gautard
Nom : Jean-Charles Gautard
Consultant, formateur et intégrateur web depuis plus de 10 ans, je mets mon expertise digitale au service des professionnels amorçant leur transformation digitale. A la recherche d'une stratégie digitale avec le CMS Joomla ? Besoin de conseils ? d'une formation ? d'un site Internet ou Intranet ? Contactez-nous

Articles qui devraient vous intéresser

L'effet miroir avec Photoshop CS4 L'effet miroir avec Photoshop CS4
Pour ce deuxième tuto, j'ai décidé de vous expliquer comment appliquer un effet miroir sur une image toujours...
Arrondir les bords d'une image avec Photoshop CS4 Arrondir les bords d'une image avec Photoshop CS4
Le principe est d'arrondir les bords d'une image qui à l'origine se présente donc sous la forme d'un rectangle....

Commentaires (19)

This comment was minimized by the moderator on the site

Merci beaucoup pour ce cours d'optimisation, a force je vais finir par appréhender un peu mieux cette histoire de cache dans sa totalité...
Pour info, j'ai installé Speed Cache de Joomunited, et le résultat est vraiment intéressant. Notament sur...

Merci beaucoup pour ce cours d'optimisation, a force je vais finir par appréhender un peu mieux cette histoire de cache dans sa totalité...
Pour info, j'ai installé Speed Cache de Joomunited, et le résultat est vraiment intéressant. Notament sur les sites avec Seblod. Effectivement, je n'ai jamais compris pourquoi (même si l'équipe de Seblod a tenté de me l'expliquer - C'est vous donner une idée de ma compréhension de la cache ), pourquoi donc, Seblod ne fonctionne quasiment plus avec la cache Joomla activée (essentiellement sur les menu vers les "lists & search"). En tous cas c'est un défaut rétabli avec Speed Cache qui permet de sélectionner les menus que l'ont veux intégré (ou donc ceux qu'on veut exclure), ce que ne permet pas la cache native de Joomla (enfin pas que je sache).
De plus il gère la cache "navigateur" vraiment mieux que le plugin cache natif Joomla. Bref je ne m'en passe plus.

Lire la suite
This comment was minimized by the moderator on the site

Merci pour ton retour d'expérience.
En effet, Speed Cache a l'avantage d'être intuitif et de faire le point. Je ne l'utilise pas car j'ai moins la main sur l'optimisation (=risque de ne pas identifier un problème qui se présenterait ou bien...

Merci pour ton retour d'expérience.
En effet, Speed Cache a l'avantage d'être intuitif et de faire le point. Je ne l'utilise pas car j'ai moins la main sur l'optimisation (=risque de ne pas identifier un problème qui se présenterait ou bien encore pas de Memcached), mais c'est clairement une extension de qualité.
@bientôt.

Lire la suite
This comment was minimized by the moderator on the site

Halo C-Jay, tu veux dire que Speed Cache n'est pas compatible avec Memcached ? Je n'ai pas encore utilisé cette option, je n'arrive pas à la paramétrer correctement (un hébergement "Cloud" sur SiteGround). j'ai aussi une autre question, par...

Halo C-Jay, tu veux dire que Speed Cache n'est pas compatible avec Memcached ? Je n'ai pas encore utilisé cette option, je n'arrive pas à la paramétrer correctement (un hébergement "Cloud" sur SiteGround). j'ai aussi une autre question, par rapport au blocage de Bot. Je me sers du Htaccess Maker d'Admintools. Mais j'ai l'impression que la liste que tu as faite ci-dessus n'est pas la même. Comment fais-tu pour tenir à jour cette liste (j'ai une quinzaine de site à tenir à jour, un processus régulier et plus ou moins automatisé serait intéressant, d'où mon utilisation d'admintools...)

Lire la suite
This comment was minimized by the moderator on the site

Sauf erreur de ma part, il n'est possible d'utiliser Memcached qu'avec le cache natif de Joomla. Mais peut-être me confirmera-tu qu'activer le cache de Joomla et Speed Cache en même temps ne pose pas problème, auquel cas cela règle le problème.

la...

Sauf erreur de ma part, il n'est possible d'utiliser Memcached qu'avec le cache natif de Joomla. Mais peut-être me confirmera-tu qu'activer le cache de Joomla et Speed Cache en même temps ne pose pas problème, auquel cas cela règle le problème.

la liste que tu as faite ci-dessus n'est pas la même

En effet, c'est du fait-maison :-) j'ai en fait un .htaccess tout prêt que j'envoie systématiquement à chaque nouveau Joomla installé.

Lire la suite
This comment was minimized by the moderator on the site

Bonjour,
Pourquoi, lorsque l'on active le cache côté serveur, les modifications de contenu faites depuis l'administration ne sont pas prises en compte ?
Le vidage du cache du navigateur (quel qu'il soit) avec CTrl+F5 n'y change rien. Le phénomène...

Bonjour,
Pourquoi, lorsque l'on active le cache côté serveur, les modifications de contenu faites depuis l'administration ne sont pas prises en compte ?
Le vidage du cache du navigateur (quel qu'il soit) avec CTrl+F5 n'y change rien. Le phénomène est identique en distant comme en local.
En l’occurrence cela concerne la mise à jour d'un lien sur un module personnalisé. Cas particulier ?
Config : win10, joomla 3.6.5

Lire la suite
This comment was minimized by the moderator on the site

Bonjour Philippe,
Les modifications de contenu ne sont pas prise en compte tout de suite puisque le principe du cache est d'avoir une copie de la page en mémoire afin de ne pas refaire les multiples requêtes nécessaires et donc de gagner du temps...

Bonjour Philippe,
Les modifications de contenu ne sont pas prise en compte tout de suite puisque le principe du cache est d'avoir une copie de la page en mémoire afin de ne pas refaire les multiples requêtes nécessaires et donc de gagner du temps de réponse. Le cache se renouvelle par défaut toutes les 15 minutes.
Il faut donc vider le cache de Joomla via Système => Purger le cache. Tu peux aussi mettre en place un bouton Vider le cache avec Cache Cleaner qui permet d'aller plus vite.
Si jamais tu as demandé à mettre en cache des ressources dans ton navigateur aussi, il faudra alors aussi vider son cache.

Lire la suite
This comment was minimized by the moderator on the site

Bonjour,

Super article! Merci pour tout ces conseils.
J'ai fais des tests avec Google page speed et grâce à l’hébergeur Siteground mon site se porte mieux. (merci !)
Cependant j'aimerais l'améliorer d’avantage et utiliser le cache de Joomla!...

Bonjour,

Super article! Merci pour tout ces conseils.
J'ai fais des tests avec Google page speed et grâce à l’hébergeur Siteground mon site se porte mieux. (merci !)
Cependant j'aimerais l'améliorer d’avantage et utiliser le cache de Joomla! Mais j'ai peur que le site plante et j'aimerais faire mes tests sur mon site clone, c'est possible?
Pour infos, JCH était bien mais site trop sensible avec Virtuemart.

J'utilise déjà Compression GZIP :)

Concernant l'utilisation d'un CDN, cela m'intéresse grandement, si j'ai bien compris l'article il faut installer KeyCDN + CDN for Joomla! ?
Donc ça n'a rien avoir avec un service proposé par Siteground?

Merci d'avance à l’auteur et à la communauté pour la réponse
Bonne journée à tous!

Lire la suite
This comment was minimized by the moderator on the site

Bonjour C-Jay
Merci pour ta réponse!

Et d'avoir précisé qu'il ne faut pas utiliser les deux caches en même temps :)
J'aimerai faire mes essais avec tes conseils sur le site test que j'ai, mais je n'y ai plus accès depuis le changement de...

Bonjour C-Jay
Merci pour ta réponse!

Et d'avoir précisé qu'il ne faut pas utiliser les deux caches en même temps :)
J'aimerai faire mes essais avec tes conseils sur le site test que j'ai, mais je n'y ai plus accès depuis le changement de serveur.

Pour KeyCDN, c'est facile à gérer, ou est-ce qu'il faut que tu interviennes? Ou est-ce que celui de SiteGround est plus simple pour les novices, car gérer par eux?
J'ai aussi lu dans ton article que CDN for Joomla était simple à configurer, de plus c'est très bien expliqué en image, merci!
Est-ce un plugin sous licence ou faut-il l'acheter?

Bonne journée la communauté!
Sabrina

Lire la suite
This comment was minimized by the moderator on the site

Sabrina,
Si tu as une offre GoGeek chez SiteGround, tu peux créer un environnement Staging.
Pour KeyCDN, j'ai trouvé cela relativement intuitif, après tout dépend de tes connaissances. Je dirais que la solution SiteGround est plus simple, mais au...

Sabrina,
Si tu as une offre GoGeek chez SiteGround, tu peux créer un environnement Staging.
Pour KeyCDN, j'ai trouvé cela relativement intuitif, après tout dépend de tes connaissances. Je dirais que la solution SiteGround est plus simple, mais au final, quand on a moins la main, c'est lorsqu'on a des problèmes qu'on le regrette. Mais il est vrai que le support SiteGround te débloquera toujours si tu as un problème avec ton CDN.
Il y a une version gratuite de CDN for Joomla qui suffit dans la majorité des cas (sauf HTTPS).

Bye.

Lire la suite
Dernière édition du commentaire il y a environ 7 ans par Jean-Charles Gautard Jean-Charles Gautard
This comment was minimized by the moderator on the site

Merci pour toutes ces infos

A bientôt

This comment was minimized by the moderator on the site

Je reviens sur ce super article, et après réflexion je vais tenter de remettre en place JCH.
Je vais le tester sur plusieurs semaines et je reviendrais ici ou sur le forum, donner mes impressions sur le référencement naturel (voir si cela fait...

Je reviens sur ce super article, et après réflexion je vais tenter de remettre en place JCH.
Je vais le tester sur plusieurs semaines et je reviendrais ici ou sur le forum, donner mes impressions sur le référencement naturel (voir si cela fait remonter mon site dans les résultats google)

C'est important de partager ses tests, cela fait avancer les choses:)
Surtout qu'il y a bcp d'avis mitigés sur le fait que google favorise les sites plus raides, surtout pour mobiles.

Belle journée à toute la communauté et à très bientôt:)

Lire la suite
This comment was minimized by the moderator on the site

Halo Sabrinae,
Pour info, il y a un an, en début de ce commentaire je mentionnais "Speed Cache" de Joomunited. de puis j'ai complètement changé de politique . J'ai tout d'abord désinstallé "Speed Cache", puis j'ai passé tous mes sites sous php...

Halo Sabrinae,
Pour info, il y a un an, en début de ce commentaire je mentionnais "Speed Cache" de Joomunited. de puis j'ai complètement changé de politique . J'ai tout d'abord désinstallé "Speed Cache", puis j'ai passé tous mes sites sous php 7.2. J'ai du coup accès à Memcache, et franchement, le couple PHP7 + Memcache vaut le détour, je suis super satisfait du résultat. Comme je suis aussi hébergé chez SiteGround (en Cloud Hosting), je me suis permis de te le signaler...
Aucun de mes sites ne fait tourner de Virtuemart, mais j'ai du RSForms, Seblod, Event Booking, Zoo ou K2 (pas sur tous, hein, selon chaque site ) et ne rencontre aucun problème de cache. Pour info, chaque site a un JCH activé. Pour la compression Gzip, je ne passe pas par celui du Joomla Core, mais par le Htaccess et le mod-deflate. j'avais lu (désolé je n'ai plus ma source) que c'était plus optimisé de cette manière. C-Jay, tu confirmes ?
Ha ben je viens de retrouver ma source... :)

Mon Htaccess contient ces lignes qui s'occupe de la compression Gzip :


## ACTIVER LA COMPRESSION GZIP ##
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Du coup la compression Gzip n'est plus exécuté par PHP mais par Apache... Enfin en tous cas c'est ce que j'ai compris...

Lire la suite
Dernière édition du commentaire il y a environ 6 ans par Stéphan Herby Stéphan Herby
This comment was minimized by the moderator on the site

Hello Stef,

Je valide tout :-)
Un petit bémol sur le mod_deflate car ça va dépendre de l'hébergement, mais SiteGround est au top :
https://www.siteground.com/kb/how_to_enable_gzip_compression_for_your_pages/
C'est bien Apache qui le gère.

@bien...

Hello Stef,

Je valide tout :-)
Un petit bémol sur le mod_deflate car ça va dépendre de l'hébergement, mais SiteGround est au top :
https://www.siteground.com/kb/how_to_enable_gzip_compression_for_your_pages/
C'est bien Apache qui le gère.

@bientôt.

P.S. Merci pour le language pack FR de Invoice Manager ;-)

Lire la suite
This comment was minimized by the moderator on the site

Hou pinaise, va falloir que je le mette à jour celui-la !
Je reviens vous poster ça dès... que les fêtes sont passées, parce que là, c'est un peu le rush

This comment was minimized by the moderator on the site

Bonjour Stef

Merci pour ton partage, cela va m'aider :)
Actuellement je suis en PHP, 7.0.32, je suis entrain de voir avec l'équipe de Nosyweb pour passer sur une solution plus puissante.
Activer memcache à l'air d'être une bonne solution.
Je...

Bonjour Stef

Merci pour ton partage, cela va m'aider :)
Actuellement je suis en PHP, 7.0.32, je suis entrain de voir avec l'équipe de Nosyweb pour passer sur une solution plus puissante.
Activer memcache à l'air d'être une bonne solution.
Je sais qu'il faut que je me trouve un moment pour faire du ménage sur les plugins, modules et images non utilisés...

As-tu remarqué une incompatibilité entre JCH et cloudfare? Et merci pour le partage de tes lignes sur la compression :)

C-Jay, le mieux est de passer par apache ou php pour la compression dans mon cas?

Belle journée à tous,

Lire la suite
This comment was minimized by the moderator on the site

Bonjour Sabrina,

La nature du setup Cloudflare de SiteGround est incompatible avec la fonction de CDN de JCH.

C-Jay, le mieux est de passer par apache ou php pour la compression dans mon cas?
On utilise les 2

Dernière édition du commentaire il y a environ 6 ans par Jean-Charles Gautard Jean-Charles Gautard
Il n'y a pas encore de commentaire pour cet article.

Ajouter vos commentaires

  1. Insérer un commentaire en tant qu'invité.
Pièces jointes (0 / 3)
Share Your Location
Contact
Dernier article sur la même thématique
Affichage des modules Joomla sur mobile, tablette et desktopAffichage des modules Joomla sur mobile, tablette et desktop
La souplesse d'utilisation des modules est une grande force de Joomla. Parmi ses avantages citons notamment ses nombreuses possibilités de positionnement sur la page, l'assignation à plusieurs...