Vous êtes passionnés comme moi de machines basse-consommation, ARM, Atom : rendez visite à mon partenaire !
Vitesse d'affichage de site web améliorée
vendredi 16 juillet 2010 à 18:30 | Performance
Google prend en compte la vitesse des sites dans leur référencement ... Beaucoup de sites web sont lents, voir très lents, et ce malgré l'augmentation des débits réseaux, tant au niveau des serveurs, qu'au niveau des clients. Comment réaliser un état des lieux, optimiser la vitesse, pour améliorer le SEO ?
Sans une bonne visibilité sur le moteur Google, il est difficile d'exister sur Internet pour un site web. Les webmaster de sites, experts du référencement sont attentifs à certaines règles, auxquelles Google est sensible en matière d'indexation.
Les algorithmes de Google ne sont toutefois pas gravés dans la pierre. Etre classé parmi les premiers résultats du moteur de recherche, est un combat quotidien, il faut surveiller les différentes évolutions apportées par Google. Maintenant, la vitesse du site est considérée par Google
Sur beaucoup de sites, le rendu est lent ... A cela, de nombreuses raisons :
- Images non optimisées,
- Widgets connectées à des sites surchargés,
- Moteurs de blogs ou de CMS mal adaptés,
- Bases de données pas optimisées,
- Serveur web trop lourd,
- Pas d'optimisation de l'infrastructure,
- Méconnaissance du développement,
- ...
Comme je le précise souvent, le fait que mon blog soit auto-hébergé sur mon ADSL (bande passante descendante chez Orange : 98kB/sec), avec une machine ayant peu de ressources (via C3 avec 512Mo de RAM), cela m'oblige à toujours garder à l'esprit l'optimisation !
Optimiser les images
Quand je navigue sur le web, je suis encore navré de voir le nombre de site, dont les images ne sont pas optimisées (images de fond, images dans les articles, ...)
Pour ma part, je n'utilise que 2 formats :
- jpg pour les images les plus grosses. Si elles sont réellement trop importantes, je les place sur mon site perso Orange ou Free.
- png pour les images ou je veux gérer la transparence ... Etant, un utilisateur Linux, j'utilise pngquant pour passer les png en 8 bits. En réalisant, plusieurs essais, je choisis le bon paramètre pour optimiser mon image. Dans, la mesure du possible les images qui illustrent l'entête des articles n'excède pas 1.8ko . Sous Windows, PhotoShop permet de réaliser les mêmes traitements, en ayant même l'affichage des différents réglages côte à côte !
Gestion des widgets sur un site web
De nombreux sites web, média-sociaux, proposent des widgets, pour afficher en temps réel des informations ... Le problème est que ces widgets ne sont plus "temps réel": prenez par exemple, la widget proposée par Twitter ... Elle rame, parfois, elle n'affiche rien !
La solution est pourtant simple ... Déporter le traitement : sur mon petit serveur, je fais exécuter un script toutes les heures (vue le peu de post Twitter que je réaliser dans une journée, c'est amplement suffisant). Ce script télécharge ma timeline Twitter, génère le code html correspondant, qui est ensuite inclus dans mon code php
#!/usr/bin/perl -w
use strict;
use XML::RSS;
use LWP::Simple;
use LWP::UserAgent;
use utf8;
use Encode;
# create new instance of XML::RSS
my $rss = new XML::RSS;
my $ua = new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);
$ua = LWP::UserAgent->new( env_proxy => 1 );
my $rdf1 = new HTTP::Request GET => 'http://twitter.com/statuses/user_timeline/67265165.rss';
my $resRdf1 = $ua->request($rdf1);
if($resRdf1->is_success)
{
$rss->parse($resRdf1->content);
}
else {die "Merde";}
my $i=0;
foreach my $item (@{$rss->{'items'}})
{
exit if($i==5);
next unless defined($item->{'title'}) && defined($item->{'link'});
$item->{'description'}=~/^itwars:\s(.*)/;
print "<li>';
print encode("utf8","<a href=\"$item->{'link'}\" target=\"new\">$1</a>\n");
print "</li>';
$i++;
}
Et voilà , temps de traitement : environs 1 minutes toutes les heures ... Temps d'affichage dans ma page NÉGLIGEABLE ! Je procède de la même manière pour le top articles (liste des articles les plus consultés).
Cette modularité permet de préparer une montée en charge et donc une meilleur scalabilité de l'architecture. En cas de surcharge du serveur principale, un serveur secondaire pourrait se charger de cette partie des traitements : on est en plein de les considérations qui intéressent le cloud computing !
Choix du moteur de blog/CMS
Mon choix, lorsque j'ai démarré ce blog était l'héberger sur une machine basse consommation (actuellement, l'ensemble routeur ADSL + serveur ne consomme que 28W/h. Et, lorsque j'aurai reçu mon Plug Computer, la consommation devrait se situer au environs de 10W/h ! )
J'ai fait le choix d'un moteur de blog léger : pluxml, mais, il en existe d'autre. Il n'utilise pas de base de données, que des fichiers textes au format xml ! Donc, pas de mySql qui utilise des ressources.
Optimisation des bases de données
Je vous livre juste un lien plein d'informations sur l'optimisation de mySql : Améliorer les performances de MySQL en partionnant les tables.
Choix de l'architecture serveur web
Beaucoup de sites utilisent encore le trop lourd serveur web apache2, il prend beaucoup de place en mémoire, recrée un contexte pour chaque thread, ... Bref, pas très efficient !
Il existe pourtant des alternatives, dont j'ai parlé dans mon article sur node.js :
- nginx
- lighttpd
- ...
Optimiser l'infrastructure
Pour avoir une plus grande réactivité sur les traitements DNS, j'ai installé un DNS sur le serveur avec un cache de 1Mo ... Le gain est faible, mais pour l'affichage de certaines pages, en particulier, celles qui comportent des images hébergées chez Orange ou Free, l'affichage gagne de 1 à 2 sec.
Les serveurs dynamiques représentent souvent les mêmes pages ... Un bon gestionnaire de cache comme xcache évite une exécution inutile du code php. J'ai configuré xcache avec un cache de 4Mo, qui suffit amplement aux besoins du blog. Gain : 3 secondes !
Faire les bons choix de développement
Il faut également, sélectionner avec soin les différents plugins, frameworks javascript que vous insérez dans vos pages. J'utilise jQuery et jQueryUI, ils ne sont pas sur mon site, mais sur un CDN (Content Delivery Network), celui de Google :
- http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
- http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js
Benchmarking des changements
Comme, dans tous projets d'amélioration d'architecture et d'application, il faut avoir des outils pour benchmarker : savoir d'où l'on part et où on est arrivé. J'utilise principalement 2 outils qui préconisent de nombreuses optimisations :
- WebPageTest : http://www.webpagetest.org/
- Page Speed outil complémentaire de FireBug sous Firefox.
Au début de l'aventure de ce blog, la page d'accueil s'affichait en 13 secondes, elle s'affiche maintenant en 3 secondes !
A propos de Vincent RABAH
Je suis DSI depuis 10 ans. Spécialiste en systèmes d'information et réseaux.
Expert en management, GreenIT et virtualisation de serveurs. Vous pouvez consulter l'ensemble de mon parcours.
I do speak English even if my blog is written in French ... Feel free to leave comments, I'll answer you !
- Google Analytics site speed pour le SEO
- ArchLinux ARM et Seagate DockStar avec le kernel Linux 3.0
- Google mod_pagespeed, accélérer Apache
- Nginx fastcgi optimisation
- Analyser les logs Nginx avec GoAccess
- Statistiques du blog it-wars.com Juin 2011
- Linux network performance tuning épisode 1
- NodeJS-News
- Scalabilité Linux et le multicore
- Performance de l'auto-hébergement avec le DockStar
Vous pouvez lire également :
Partagez cet article :





Bonjour Mimie, pour le serveur DNS, j'ai utilisé BIND sous Linux. Ainsi, les requêtes vers Orange ou Free sont traitées plus rapidement ;) Depuis, j'utilise un technique plus simple : je place en dur dans le fichier /etc/host le nom de machine et son adresse ip, ainsi plus besoin de serveur DNS!
Merci pour cet article, il faut que je m'y atèle, mais le manque de temps ...
Bonjour Vincent, dans la partie "optimiser l'architecture" tu dis que tu as installé un DNS sur ton serveur, peux-tu nous donner plus de détails et quel outil tu as utilisé ?
Sinon au lieu d'héberger tes images chez Orange ou Free je te conseille d'utiliser Google Apps Engine en suivant la manip' décrite à <a href="http://www.digitalistic.com/2008/06/09/10-easy-steps-to-use-google-app-engine-as-your-own-cdn/" target="_blank">cette adresse</a>, un CDN c'est tout de même plus optimisé :)
Salut Filirom1, 1.64sec au regard de la configuration : un ARM, comme sur un téléphone, et un ADSL sur son lien descendant n'a que 768kb/sec de bande passante ... Ça en laisse plus d'un rêveur, quand on voit certains sites chez des gros hébergeurs avec 100Mb/sec de bande passante, en hébergement dédié avec des Xeon, qui rament lamentablement !!!
Sinon, pour ma part j'utilise : http://www.webpagetest.org/ qui me donne les mêmes résultats.
A+
Je viens de tester sur ton site, tu t'en sors bien :
Temps total de chargement 1.64 Secondes
Nombre total d'éléments 30 Fichiers
Taille totale des fichiers 357 Ko
http://www.monitoring-transactionnel.com/performance/feefcb2c494ef96c969bcc9190d58349ab255477
Merci, pour cette information, je ne connaissais pas cet outil.
j'ai évidemment oublié le .com dans le lien du post précédent :
http://www.monitoring-transactionnel.com/performance
Voilà qui est réparé ;-)
Bon article, le découpage est intéressant
Suivre sa performance moyenne est important pour conserver la fidélité des visiteurs
Pour un outil de test de page web en français, je conseillerais
http://www.monitoring-transactionnel/performance
Vraiment bien!
Bonjour @Rpnpif quand je parle de basse consommation, je me mélange un peu ... J'ai prévu d'autres articles sur le sujet !
A bientôt.
"actuellement, l'ensemble routeur ADSL + serveur ne consomme que 28W/h. Et, lorsque j'aurai reçu mon Plug Computer, la consommation devrait se situer au environs de 10W/h ! "
Les W/h ne veulent rien dire, il s'agit de Wh soit 1 Wh=3,6 kJ (kilojoules).
Les essais de système basse consommation m'intéressent beaucoup.
Cordialement.
Bonjour Pierre et merci, si tu as besoin d'infos particulière, n'hésite pas et sache que je suis actuellement en préparation d'un article pour expliquer comment réaliser une montée en charge et de la sécurisation de lien ADSL/Backup ;)
A+
Tres bon article ! Je vais essayer de m'en inspirer pour améliorer mon serveur web sur Dockstar aussi.
Bonjour,
C'est vrai que de mettre les images sur d'autres sites ça éparpille ... Mais, vu le peu de bande passante de nos pauvre ADSL ! Vivement la fibre optique pour tout le monde :)
Article très intéressant, je suis aussi auto-hébergé pour mes applications rubyonrails, le coup de mettre les images sur des serveurs orange ou free, j'y ai pensé, mais après on en a dans tous les coins :s !
Merci pour l'astuce sur la réduction des png !
Et de bon articles intéressants !