Un petit peu d'optimisation !
11 April 2006Comme vous le savez, je suis un geek. Comme tout bon geek, je recherche toujours le meilleur, la perfection numérique ainsi que la puissance absolue, bien évidemment c'est pas facile à obtenir. Le serveur qui héberge actuellement GeekBoy se trouve être 1&1.
Il faut savoir que je saute sur à peu près tout les hébergeurs qui se présentent à des fins de tests, je m'excuse d'ailleurs publiquement auprès des gens qui sont sur les mêmes serveurs mutualisés que moi. Je sais que je devrais pas faire mes tests sur un serveur de prod mais il n'y a rien de mieux que d'expérimenter sur un sujet en activité. Le local s'est bien pour les boucles infinies et les développements en cours :). Donc, aujourd'hui je me suis attelé à la tâche de tester un serveur OVH, ils offrent un compte 1000GP gratuit si l'on prends un nom de domaine chez eux, j'ai pris n'importe quoi afin de pouvoir tester cela (la première année, le nom de domaine est gratuit !). Je ne sais pas sur quel serveurs sont hebergés ces offres mais... c'est loin de la réputation d'OVH. J'ai pu en tester par le passé (les débuts de ZoneK à vrai dire, il y'a environ 2 ans il me semble.) et c'était autrement plus performant mais l'offre était payante (enfin..networking quand tu nous tiens !). Bref, après avoir donc été fortemment deçu des performances du serveur OVH, je me suis tout de même remis en question : "Et si mes pages n'étaient pas optimisés ?". Je fais mes recherches et m'aperçoit que 1&1 hébergent les offres gratuites sur les mêmes serveurs que les clients qui payent ! (Bonjour cher voisin de serveur :)) Ne cherchez pas de l'altruisme dans l'acte de 1&1, c'est le OVH allemand si l'on veux et souhaitant s'installer en France, il fallait une opération choc pour s'introduire dans notre pays.
Après avoir découvert cela, je me dis que ce sont forcémment mes pages car j'observais des temps de réponses et des temps d'affiches excellent chez des personnes étant sous WordPress et chez 1&1, j'ai d'ailleurs découvert énormement de sites à cette occasion. Mon brave NetNewsWire (aggrégateur de flux RSS) a encore grossi :D.
Donc, il y'avait sur ce blog 3 plugins différents en plus du système de cache natif à WordPress (depuis la version 2.0, on attends toujours DotClear d'ailleurs qui perds des adeptes de jour en jour, cf Jeux de Maux). L'un de ces plugins compressait les CSS en GZip et les renvoyait au client, un autre s'occupaient des URL distantes. Un peu de détail sur celui là, toutes les urls qui n'étaient pas locales, ce script téléchargait l'objet distant et le ramenait dans le cache de WordPress sur le serveur, du coup ça devient local, c'est bien plus rapide ! Je parle bien sûr d'objet distant, des images, ce genre de choses, je me vois mal aspirer le web pour le mettre dans mon cache ;). Et enfin le dernier était un gestionnaire de cache qui datait du temps ou WordPress ne possédait pas de cache en natif.
J'ai donc passé mon après midi à essayé à peu près tout les mix afin d'arriver à un nombre de requêtes moins imposant et un temps d'éxécution digne d'un serveur professionel. Et voici donc le système actuelle qui se trouve être beaucoup plus simple ! La compression des CSS prenait énormément de temps et ne faisait vraiment pas gagner beaucoup de temps, surtout depuis que les accès haut débit (qui as dit "bourgeois" ? :p) se sont démocratisés. Le plugin de cache ayant déjà un an, les optimisations n'étaient plus en accord avec le noyau de WordPress il a donc subit la suppression ! Le système de cache des URL me permets de gagner beaucoup de temps et également quelque précieuses requêtes SQL, je l'ai donc conservé et j'ai remis en route le système natif de cache de WordPress ainsi que la compression GZip. Comme vous pouvez le voir dans les sources de la page d'index tout en bas : 26 queries. 0.537 seconds.
Au moment ou je tape ces lignes (00:25) alors qu'avant nous étions plus proche de la cinquantaine de requêtes et de 1secondes de temps d'éxécution. Si vous voulez lire des choses très drôles sur les différentes requêtes qu'éxécutes WordPress, allez lire ça ! C'est assez... édifiant tout de même. J'espère que les développeurs de WordPress font faire quelque chose, au pire je mettrai les mains dans le cambouis la semaine prochaine si cela n'a pas évolué, cela permettra de gagner encore de précieux dixièmes de secondes à l'éxécution et un allégement de la charge pour le serveur MySQL, même si celui n'a vraiment pas grand chose à traîter (cf les Stats !). Pour vous donner une petite idée, les SGBD (Systèmes de Gestion de Base de Données) comme MySQL, SQL Server ou Oracle (même si il faut bien l'avouer, MySQL est un peu en deça de ces concurrents payant) sont capables de gérer des applications générent une charge d'un millions de lignes par jour. Je n'ai plus les chiffres exact en tête mais Oracle est capable de gérer des tables montant jusqu'à plusieurs Tera Octets, je vous laisse imaginer les bases de données. Les bases sur lesquelles je travaille actuellement dans mon stage font plusieurs millions de lignes et on comprends les cours d'optimisation (gestion d'index tout ça tout ça) que l'on nous as donnés ! Même si je ne suis pas en contact direct avec ces bases, j'y ai accès, je vous assure que c'est assez imposant tout de même, c'est ma première "vraie" (entendre par là que le SGBD ne s'en occupe pas avec un bout de doigt, tout en sirotant un jus d'orange sur un transat et en lisant le dernier Technikart !) base de données tout de même :).
J'ai également retiré le JavaScript SweetTitles, il avait l'air mignon de premier abord mais je l'ai trouvé plus embêtant qu'autre chose et beaucoup trop lourd à charger (contrairement à Moo.fx par exemple, allez voir ici pour en lire un petit peu plus sur cette "mini" librarie).
Je profite également pour vous faire découvrir un outil que j'ai trouvé lors de mes recherches : le Web Test de OVH très indicatif ! Et voilà désormais un site qui gagne en fluidité pour vous.
Si vous avez des questions où quoi que ce soit, mon mail est dispo dans le "Colophon" (dans la sidebar juste là --> )
PS : J'ai également eu mon premier spam sur WordPress, ça faisait bien longtemps. J'ai déjà trouvé un système anti spam si ils persistent à nouveaux (Souvenez vous, pour les anciens, les centaines de spam en commentaire le matin, j'adorais faire un tour dans phpMyAdmin ou éxécuter mon script le matin avant de partir, ça mets toujours de bonne humeur le matin. J'avais presque cru qu'ils m'avaient oublié vu qu'ils y'avaient eu une vague de spam, après celle que j'avais subi, sur les autres blogs mais visiblement non.)