dedibox

Vous le savez certainement déjà, je suis un fan de tuning de site web, c'est l'une de mes grandes passions ;-)

Suite aux nombreuses améliorations déjà réalisées il y a plusieurs mois sur ma Dédibox :

J'ai décidé d'aller plus loin en m'intéressant aux nombreuses recommandations fournies par l'excellent outil Google Page Speed et par Yahoo!.

Voici plusieurs astuces que j'ai mis en place et qui vous donneront peut-être des idées pour votre blog / site internet.

Utilisation d'un vhost pour l'hébergement des ressources statiques

J'ai tout d'abord créé un vhost static.geeek.org dédié aux contenus statiques : images publiés, thème graphique ... Dans Dotclear (plugin "about:config"), j'ai précisé le chemin de ce vhost sur mon disque et son URL visible du Web.

Le but de ce vhost est qu'il soit cookie-free, pour permettre au navigateur de récupérer les images rapidement sans devoir fournir un cookie inutile au serveur Web.

Cette optimisation permet aussi aux proxy HTTP de cacher les ressources statiques. Les proxy HTTP ne cachent pas les images qui sont appelées avec un cookie dans le header http.

Customisation du script Google Analytics

J'ai essayé de faire en sorte que tous les cookies générés par le blog soient associés au "Hostname" www.geeek.org et pas au nom de domaine global geeek.org.

Par défaut le script Google Analytics génère un cookie avec le nom de domaine de votre site. En regardant la documentation de Google Analytics, le script offre la possibilité de diminuer le "scope" du cookie à un vhost précis. Pour cela j'ai utilisé la méthode "_setDomainName" qui permet de définir le scope du cookie.

var pageTracker = _gat._getTracker("UA-605163-4");
pageTracker._setDomainName("www.geeek.org");
pageTracker._trackPageview();

En spécifiant www.geeek.org, le cookie qui est créé sur le client est spécifique au vhost qui héberge le blog. Toutes les requêtes vers les fichiers statiques présents sur static.geeek.org seront ainsi sans cookie.

Utilisation du header "Expire"

Sur un blog, tous les contenus statiques varient que très rarement : les images, les CSS, les fichiers javascripts ... Pour cette catégorie de fichiers, il est possible de définir un délai d'expiration dans la configuration de votre serveur web.

L'idéal est de définir une date d'expiration supérieure à un mois, sauf si vous avez l'habitude de changer régulièrement le thème de votre blog. Les images, les CSS, les javascripts sont ainsi cachés par les navigateurs et sont rechargés dès que leur date d'expiration est atteint où dès que l'utilisateur force le rechargement de la page (CTRL + F5).

Le fait de forcer le cache des images de votre thème peut permettre un énorme gain de bande passante. Surtout si votre thème est super travaillé.

Utilisation des Etag / If-modified-since

La norme HTTP 1.1 offre la possibilité aux clients Web de demander si le contenu d'une page web a été changé. Pour cela le navigateur, dans le cas d'une page qu'il a déjà parcourue, envoi un Etags unique ou une date de dernière modification de la page qui lui a été fourni par le serveur lors de sa dernière visite.

En fonction de ces éléments, le serveur HTTP est capable de décider par lui même s'il est nécessaire de renvoyer la page Web au client. Si nécessaire, tout le contenu de la page est envoyé au client, sinon une réponse HTTP 304 est retournée au client pour lui indiquer que la page n'a pas été modifiée.

Sur Geeek, cette vérification est réalisée dès l'entrée dans le index.php de la plateforme de blog. Cela permet dès les premières lignes de code de savoir s'il est nécessaire ou non de retourner une réponse 304 au client.

Les Etags vous permettent d'économiser du CPU et de la bande passage pour les nombreux spiders qui visitent votre site Internet à longueur de journée. Ces Etags doivent très certainement permettre à Google d'économiser des millions de Giga bytes de bande passage. Il est tout à fait possible que la gestion des Etags influent sur le ranking Google.

Par défaut Dotclear gère les Etags et les header if-modified-since, cependant cette gestion est faite à la fin du Workflow de délivrance d'une page.

Gzip des pages dans le cache

Afin de diminuer la taille du cache mémoire, la taille du trafic réseau et la quantité de CPU consommée par le serveur, les pages mises en cache mémoire sont gzippées dès leur insertion (via la fonction php gzencode)

A chaque requête HTTP d'un client, si la page est présente dans le cache, elle est retournée au client directement gzippée (si le navigateur supporte le gzip). Cela permet de réduire par 3 ou 4 la bande passante consommée par les pages HTML, et indirectement le temps de chargement de la page par le navigateur.

J'espère que ce petit article est clair, n'hésitez pas à poster un commentaire si vous trouvez ces optimisations utiles ou inutiles et si vous avez d'autres idées d'optimisations possibles.

En attendant, ma Dédibox "standard" a une charge CPU moyenne de 8% pour 200 000 hits / jour. Je pense qu'elle peut absorber au max une charge de 30 000 visiteurs journaliers.

1. Le , 10:42 par Olivier Dolbeau
418997665c4a3368515ecf9c3d746b95

Très impressionnant!
Même si individuellement, l'impact de ces modifications est certainement très difficile (impossible?) à mesurer (je pense notamment à la modification du script Google Analytics), je ne doute pas qu'au final, les économies de bande passante (et de temps d'attente pour le lecteur) sont réelles!

Il ne me reste qu'une seule chose à dire: Félicitations! :)

2. Le , 12:03 par t0shii
ad094dd11c1f8ddecde23b1c29240903

J'ai pas tout compris, mais ça à l'air bien =D

3. Le , 12:21 par Damien
3f1f0b55743445a0b521cbdaf331b1ea

C'est beau :-)

A savoir aussi que de placer certaines ressources sur un autre domaine optimise le parallel download : http://developer.yahoo.com/performa...

4. Le , 13:25 par Ludovic
9ab09dd3e305f924f8930e20e1a35843

@Damien : Merci Damien, c'est vrai. Comme les images ne sont pas associé à un cookie, le browser les télécharge en parallèle.

5. Le , 19:39 par tire lait
33ca7bd65695348ccd5d1d05c99d6b4f

Bonjour,

Sympa ce blog.

Bonne continuation.

6. Le , 15:00 par freelance writing
dafc9208202790bf750150a943852db0

J'ai toujours été intéressé dans tuning!

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.