Quand on teste on fait attention au calendrier. Bordel !

Un jour il faudra que je fasse un bilan sur tout mon boulot autour de l’internationalisation d’un site. Ça fait maintenant plusieurs années que je me débat avec le référencement multilangue, j’ai ajouté les problèmes de duplicate content en créant un site par pays – ce qui m’a posé pas mal de soucis ces derniers temps.

Ma dernière modification vient d’une mise à jour de Google qui permet de spécifier la langue et la localisation des sites qu’on gère et de donner l’url des autres versions traduites et localisées. si vous gérez un site multilangue vous DEVEZ lire ça.

Comme on n’est jamais trop prudent j’ai commencé le test sur la version espagnole de forexticket – Espagne, bolivie, argentine, mexique… Google a été très rapide pour prendre en compte la nouvelle configuration car en quelques heures Google.bo ne renvoyait plus la version .es de forexticket mais la version .bo sur une requête avec le nom du site. Jusqu’ici tout va bien !

Bien entendu j’ai mis en place des critères de mesure d’audience pour mesurer l’impact de ces changements. Et on en vient au sujet de ce billet… Quand on fait des tests d’audience localisée on fait TRÈS attention au calendrier !

Cette semaine il y a eu

  • le 6 décembre : férié en Espagne
  • le 8 décembre : fêté en Espagne, Chili, Mexique, Argentine… bref quasiment tout les pays hispanophones.

Bien entendu l’audience s’est effondrée dans ces pays, comme chaque année, me causant un stress inutile. Je suis donc bien incapable de mesurer l’impact des changements cette semaine.

Le temps de chargement des pages explose

En 6 mois le temps de chargement des pages de mes sites sur le forex a explosé. Il est passé de 6 à 9 secondes en moyenne avec des pointes de plus en plus régulières au delà de 10 secondes – d’après Google Analytics. J’ai commencé à passer la plupart des images dans des sprites CSS. Je teste en ce moment l’encodage en base 64 de ce sprite dans le CSS pour limiter encore le nombre de hits sur le serveur (je suis passé de 60 hits à 30 pour construire une page). L’impact de mes tentatives d’amélioration a été négligeable jusqu’à présent.

Il faut dire que l’audience, qui était pour moitié française il y a quelques années, augmente très fort en Asie. La France ne représente plus qu’un quart des visites. J’ai donc investi dans un CDN en passant par le CloudFront d’Amazon sur lequel j’ai placé mes fichiers CSS, javascript et quelques images. A priori ça devrait me couter une cinquantaine d’euros par mois. Le gain espéré est un retour sous les 6 secondes pour afficher une page et à terme un meilleurs retour des visiteurs (plus de visites et plus de pages vues par visite).

J’ai monitoré toutes les améliorations en m’aidant de Webpagetest que je conseille chaleureusement.

J’espère maintenant faire un retour positifs dans quelques jours… Dans le cas contraire, il faudra que je continue de chercher.

Heureusement que certains bossent pendant que d’autres sont à LeWeb 😉

Comment gérer plusieurs langues sur un site ?

Matt Cutts vient d’aborder une question intéressante sur la gestion de plusieurs langues sur un site. Selon lui, la meilleure méthode est d’acheter un tld par langue… ça m’arrange, c’est ce que je compte faire.

Par contre il semble dire que ce n’est pas la peine d’acheter le .ca si c’est pour reproduire les langues anglaises et françaises déjà présent sur .fr et .com (par exemple). Là où je suis gêné c’est qu’un .fr aura du mal à sortir au Canada.

Changer un nom de domaine

Une fois n’est pas coutume, je vais expliquer longtemps à l’avance ce que je compte faire pour améliorer mon positionnement sur le forex. J’ai besoin de poser par écrit ma « stratégie » et j’ai aussi besoin de feedback pour savoir si je ne fais pas de trop grosses conneries.

Mon site forex (Mataf.net) est relativement bien positionné au niveau de l’audience (voir le suivi concurrentiel que je publie régulièrement). Son taux de croissance est conforme au taux de croissance du secteur, je suis donc bien dans le marché. Ma principale source de trafic vient de France (34% depuis le début de l’année selon Xiti), les pays suivants sont l’Espagne et les USA à 4.6% chacun. On peut donc dire que l’audience est, au moins pour les 2/3 hors de France, assez bien répartie sur le globe.

J’ai quand même un problème : je n’arrive pas à diminuer ma part d’audience française. Quoique je fasse (multiplication des langues, IP anglaise) je reste avec  mes 35%. Historiquement Mataf.net est un site français qui a ajouté progressivement de nouvelles langues, ma difficulté pour augmenter les nombre de visiteurs à l’étranger vient peut-être de là.

En dehors de ce problème d’audience j’ai un problème de nom de domaine. Lorsque j’ai lancé le site j’ai opté pour un .net car le .com était pris. Parfois des visiteurs tapent intuitivement dans la barre d’adresse le nom du site avec un .com, et le pire c’est que ça m’est déjà arrivé ! J’ai bien tenté d’acheter le .com, mais le propriétaire a refusé mon offre de 15’000$. Celui qui possède le .fr est aussi un peu gourmand.

Ça fait longtemps que je tourne autour et j’ai franchi le pas : je vais « tuer » mataf.net et le transférer sur un nouveau nom. J’ai donc acheté un ndd sympa avec une centaine de suffixes pour couvrir tous les principaux pays et je travaille actuellement sur une version géolocalisée de mon site. Je donnerai le nouveau nom quand j’aurai verrouillé tous mes achats, ça représente encore 5k€ de dépense annuelle.

Je vais transférer progressivement chaque langue de mataf.net sur nouveau nom de domaine géolocalisé, en commençant par celles qui apportent le moins d’audience. Je vais monitorer l’audience pour essayer de mesurer la perte (ou le gain) de visiteurs. Je terminerai par la bascule des langues principales : anglais, espagnol et français. La transition sera très douce et devrait s’étaler sur plusieurs mois/trimestres.

Le risque est grand de perdre la popularité de Mataf auprès des moteurs de recherche à court terme et de diluer un site sur plusieurs dizaines. Mais à plus long terme je crois que ce sera bénéfique. Bien entendu je vais travailler en respectant quelques règles SEO : redirection 301, déclaration dans GWT…

Alors bonne ou mauvaise stratégie ? Voyez-vous des points que j’ai oubliés ? Des idées pour minimiser les risques ?

Optimisation du taux de conversion

Ca faisait longtemps que je n’avais pas tenté une petite optimisation du taux d’enregistrement à la newsletter sur Mataf. J’ai donc un peu rafraichi le formulaire et fait tourner 4 images pour mesurer l’impact. Le test a tourné pendant 12 jours, et j’ai trouvé une image qui se détache nettement des autres avec un taux de transfo moyen de 1.53% contre 0.92% pour la plus mauvaise.

Je vais donc conserver le vainqueur et continuer à tester avec de nouveaux visuels.

J’ai travaillé avec Google Website Optimizer, la mise en place du test m’a pris 30 minutes.

Optimisation-conv-rate

Amélioration du temps d’affichage du site.

Depuis quelques temps mon serveur commençait à prendre un peu trop de charge. Le load average du serveur tournait en permanence au-dessus de 20 (alors qu’il n’aurait pas dû passer au dessus de 4).  La faute à quelques scripts un peu trop gourmand en CPU et surtout en lecture/écriture sur disque.

Le plus important écrivait 70Mo par minute, soit plus d’1Mo par seconde. A ça s’ajoutait un peu plus pour la lecture. D’autres scripts accédaient non stop à une base de données contenant 500Mo de data diverses… Et comme je suis loin d’être un pro de l’optimisation je vous laisse imaginer le résultat.

J’ai donc été obligé de changer de machine, de réécrire mes scripts et de faire quelques petites optimisations. Dans l’ordre :

Location d’un serveur plus puissant. Un HG-2010 SSD chez OVH. SSD car les accès disques sont importants, et le produit proposé par OVH me semblait pas trop mal. J’ai en plus pris l’option 48Go pour la RAM, tant qu’à faire autant le faire en grand.

Allégement de la base de données est stockant le résultat des requêtes en RAM avec Memcached (d’où l’option 48Go). De mémoire j’ai alloué 24Go à Memcached, de quoi mettre beaucoup de données.

Utilisation du module mod_expires d’apache. J’ai appris que ce module pouvait faire en sorte de mettre en cache des données dans le navigateur de mes chers visiteurs. Les images sont donc stockées 1 mois ainsi que les fichiers CSS et JS. Pour éviter les bugs avec un CSS ou un JS pas à jour, à chaque mise à jour je change les noms (fichier.css?version=1.15 par exemple). J’ai fait quelques tests avec Firebug + page Speed de Google et le gain est loin d’être négligeable. Le tout peut se gérer avec quelques lignes dans le .htaccess

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css “access plus 1 month”
ExpiresByType text/javascript “access plus 1 month”
ExpiresByType application/x-javascript “access plus 1 month”
ExpiresByType application/javascript “access plus 1 month”
ExpiresByType image/x-icon “access plus 1 month”
ExpiresByType image/ico “access plus 1 month”
ExpiresByType image/vnd.microsoft.icon  “access plus 1 month”
ExpiresByType image/png “access plus 1 month”
ExpiresByType image/gif “access plus 1 month”
ExpiresByType image/jpeg “access plus 1 month”
ExpiresByType image/jpg “access plus 1 month”
ExpiresByType application/x-shockwave-flash “access plus 1 month”
</IfModule>

Pour les quelques images dynamiques j’ajoute un header en PHP

header(“Pragma: public”);
header(“Cache-Control: maxage=”.$expireGraph);
header(‘Expires: ‘ . gmdate(‘D, d M Y H:i:s’, time()+$expireGraph) . ‘ GMT’);
header(“Content-type: image/png”);

Mes 10 fichiers CSS et 13 fichiers js ont été regroupés et compressés avec minify. Je gagne 21 hits sur chaque visiteur + des pages qui gagnent encore en vitesse d’affichage.

J’ai placé le code Google Analytics asynchrone. Je n’ai pas mesuré l’impact, je me fie à la compétence des ingénieurs de Google. Seul petit hic, je n’ai plus d’évènement et je n’ai pas encore trouvé d’où provient le bug… Il faut dire que je n’ai pas cherché longtemps.

Toutes mes anciennes données en cache – celles qui prenaient 1Mo/ seconde en écriture disque – sont passées en RAM avec memcached. Une vrai révolution dans ma façon de coder mais la forte diminution des accès disque a fait passer à lui seul le load average de la machine à 10 (sur le nouveau serveur) à 0.5/2.

Il me reste encore à utiliser les sprites dans les CSS. Mais pour ça il me faudra un peu de temps. Les images et moi ça fait 2. Quand ce sera fait je devrais gagner une vingtaine de hits par visiteurs… Encore un point non négligeable pour la charge serveur et la rapidité du site.

Le bilan de tout ça ?

D’après Google le temps d’affichage moyen d’une page par un visiteur est passé de 6 à 4 secondes (gain >30%). J’ai bon espoir de descendre sous les 3 secondes d’ici quelques temps. Je serais de toute façon limité à cause du temps d’affichage des bannières pub et du marqueur Xiti (d’ailleurs je suis en train de réfléchir à l’enlever)

Google passe moins de 0.5 seconde à crawler une page contre 1.5 seconde avant mes optimisations diverses.

Petite déception, je n’ai pas de modification du nombre de pages vues par visites ou une diminution significative du taux de rebond. Il faut croire que mes visiteurs étaient patient…

Il parait que la rapidité des sites va entrer dans l’algo du classement des sites dans le moteur de recherche. C’est un bon argument pour aller le plus loin possible sur cette route.crawl-google

Liens sortants et jQuery

event-liensSi vous utilisez jQuery et Google Analytics, voilà un petit bout de script qui permet de comptabiliser les liens sortants comme des évènements, il suffit de le placer dans le pied de page. C’est pas grand chose, il y a certainement un code plus propre… mais ça fonctionne pas trop mal. Maintenant je sais que je peux avoir jusqu’à 1000 clics sur les divers liens externes du site chaque jour…

<script type=”text/javascript”>

$(“a”).each(function() {

var a = $(this);

var r = a.attr(“href”).match(/(http:\/\/)(([a-z0-9.-]*)(\/)(.*))/i);

if(r) {

if (r[3]!=”www.monsitegenial.com”) {

$(this).click(function() { pageTracker._trackEvent(‘ClickExterne’,’Click’,r[3]); });

}

}

});

</script>

PS : ne pas oublier de remplacer monsitegenial.com par tonsitegenial.com.

J’abandonne WordPress

Dans mes réflexions sur l’impact que peuvent avoir mes actions dans le futur, j’avais évoqué un problème de CMS lors de l’amélioration de l’internationalisation de Mataf.net.

J’utilise depuis quelques mois WordPress pour gérer une partie des pages et le flux de news du site. Cependant mes développements sont rarement compatibles avec la rigidité d’un CMS et je dois sans cesse modifier le code pour que tout fonctionne parfaitement.

En plus WordPress ne gère pas le multilangue ce qui me donne une installation par langue. Certaines modifications doivent donc être reproduite jusqu’à 7 fois (5 WordPress + la partie sur mon CMS perso + le forum).

Et je vous raconte pas les bugs lors de mises à jour de WordPress… J’arrive donc a avoir une usine à gaz qui me prend de plus en plus de temps.

Je tourne ce problème dans tous les sens depuis quelques jour et la meilleure solution : je reviens à mon CMS perso pour gérer tout le site. En script externe je garde juste le forum.

Le “gros” inconvénient de mon CMS c’est qu’il n’y a pas de base de données, toutes les pages doivent être écrites en html et envoyées sur le serveur. Donc impossible de faire des modifs si je n’ai pas la possibilité de me connecter au serveur. D’un autre côté je n’ai jamais eu besoin de faire des modifications à distance.

Le gros avantage c’est que j’ai un seul template pour tout le site dans toutes les langues. Je maîtrise aussi complètement ce CMS puisque c’est moi qui l’ai fait…

La gestion du site passera donc par une solution 100% maison.

Edit : Attention j’abandonne WordPress sur Mataf.net et pas sur ce blog… Il fallait que ce soit dit 🙂

Diffuser l’information

Ce matin le groupe de diffusion que je gère sur YahooGroup a dépassé les 10000 membres et est passé premier de sa catégorie sur Yahoo.com. Ce groupe me sert de système d’alerte mail pour ceux qui souhaitent suivre les analyses que je publie.

Depuis longtemps j’hésite a changer de système pour prendre un outil de gestion d’envoi d’email.  Les outils online payant sont inaccessibles car j’envoie 2 mails par jour à plus de 10’000 contact soit plus de 400’000 mails par mois. J’en aurais donc pour plusieurs centaines d’euros par mois minimum.

On m’a conseillé plusieurs fois Sarbacane, qui est, parait-il, rapide. Ce n’est pas une tache prioritaire mais j’essayerai de le tester un jour.

L’autre possibilité c’est de multiplier les canaux de diffusion et de s’incruster dans tous les réseaux sociaux et autres sites Web2.0. J’ai déjà mon twitter Forex mais pourquoi pas continuer sur Facebook, Myspace… J’ai aussi le groupe Forex sur Google mais j’ai complètement oublié les login/pass.

Pour le moment je vais me contenter de mon YahooGroup car à trop vouloir en faire on finit par faire n’importe quoi…

Retour au travail

Alexa le met bien en évidence. Les dernières semaines ont été dure pour mon site sur le forex. Il faut dire qu’il y a eu les ponts qui ont pesé sur l’activité et que j’ai eu une panne de nounou pendant 6 longues semaines. J’ai donc plus fait du coloriage et de la pâte à modeler avec les petits que du PHP et de l’analyse financière.

Je suis de retour au business à 100%, motivé comme un chien devant un os qu’il aurait enterré son os 1 mois plus tôt.

A programme des prochain jours.

  • Phase 1 de l’internationalisation (i18n comme ont dit chez les barbus) de Mataf.net, je prépare le terrain en mettant une homepage multilangue pour que l’ami anglophone ne soit pas perdu quand il arrive.
  • Un contenu plus étoffé. Histoire d’inciter les visiteurs à voir quelques pages de plus (suite à ma mésaventure sur le refresh automatique)
  • Et je vais renier mes convictions en remettant en avant le côté communautaire. J’y ai mûrement réfléchit et je vais tenter d’innover un peu… Je détaillerais quand ce sera en place. Si ça marche je rachète Facebook dans la foulée.
  • Je bosse aussi sur l’optimisation de site avec une startup Canado-Suisse. Le mélange des accents est un régal. (le Belgo-Suisse est pas mal aussi…). Un compte rendu complet sera publié cet été.

Au boulot…