Wednesday, 7 April 2010

Minimiser ses fichiers CSS et JS, quelles solutions ?

Bonjour à tous ! 

Je profite d'un article de Prélude sur l'optimisation par compression ou par minimisation pour présenter les différents moyens existants pour minimiser (ou minifier en mauvais français) les fichiers CSS et JS de votre site. 

Performances des pages web

Mais déjà, pourquoi faudrait-il minimiser vos fichiers ? Au débuts de l'Internet, on avait des débits ridicules, et il fallait donc réduire au maximum le poids de nos pages. Et puis, l'ADSL est arrivé et on a petit à petit oublié les limitations liées au débit. Ce fut une erreur, parce que les internautes détestent attendre. Aujourd'hui, on entend dire que Google va prendre en compte le temps de chargement des pages pour ses algorithmes de recherche. C'est une bonne chose, car cela ramène la question de la vitesse de chargement sur le devant de la scène du développement web. 

Vous trouverez déjà beaucoup d'articles sur le web qui parlent de performance. Il y a des sites entièrement dédiés à ce pan du développement, et Google saura vous les indiquer. Je ne vais donc pas répéter ce que d'autres expliquent mieux que moi, mais je vais vous présenter une façon d'améliorer ses performances que j'apprécie. 

Compression à la volée

Si vous suivez mon blog et mes projets, vous avez vu mon plugin Minifier pour Atomik Framework. Ce plugin permet de minimiser ses fichiers CSS au moment où ils sont demandés par l'internaute. Plusieurs intérêts à ça : réduire le nombre de requêtes HTTP, réduire la taille des fichiers CSS. Au final, l'utilisateur télécharge beaucoup moins de données inutiles, pour le même résultat affiché. 

J'avais découvert cette technique sur le blog de LateralCode (Stunningly Simple CSS Minifier), et j'ai vite accroché. Je ne suis pas fan de la minimisation avant l'envoi des fichiers sur le serveur, parce que ça oblige à avoir deux versions du code (une normale, une réduite), et surtout, ça oblige à re-minimiser les fichiers à chaque changement. Comme tout développeur, je suis faignant, donc ça ne me convient pas. 

La technique proposée par LateralCode consiste donc en une compression via un script PHP, donc directement sur le serveur. On spécifie les fichiers CSS à charger, le script PHP les ouvre, les compresse et les concatène, puis renvoie le résultat. C'est ce que j'ai fait avec Minifier, en ajoutant une fonctionnalité de mise en cache. 

Mise en pratique

Prenons un exemple pratique pour bien voir tout l'intérêt de ce système : j'ai un site avec trois pages. Sur chaque page, j'ai trois fichiers CSS communs : reset.css (un système de reset CSS comme celui d'Eric Meyer), global.css (qui définit des attributs sur mes éléments HTML, comme img { border: none; }) et main.css (qui définit le design général des pages). Ensuite, sur chaque page je charge un fichier particulier, correspondant au nom de la page, qui définit le style des éléments spécifiques à cette page. J'ai donc, sur chaque page, au moins 4 fichiers CSS différents. Ceci me permet d'avoir des fichiers proprement séparés, un code CSS réparti et donc mieux organisé, etc. Seulement, au niveau des performances, c'est pas le top, car 4 requêtes HTTP sont nécessaires pour charger le CSS de la page. 

L'utilisation du plugin Minifier, ou de tout autre système similaire, permet de faire ceci : 

  • génération du nom du fichier cache correspondant aux fichiers CSS demandés
  • si le fichier cache existe, et que les fichiers CSS sont moins récents que le fichier cache, on renvoi directement le fichier cache
  • sinon, compression de chaque fichier séparément (retrait des espaces, des retours à la ligne, des commentaires... )
  • concaténation des fichiers
  • enregistrement du résultat dans un fichier cache
  • renvoi du fichier cache

Au final, on aura donc sur notre serveur des fichiers toujours aussi propres, et on aura en cache un fichier CSS compressé par page. Les internautes ne reçoivent donc qu'un fichier compressé correspondant au code de la page visitée. 

Problématiques

Les systèmes de compression à la volée existent depuis quelques temps, mais je ne crois pas qu'ils soient très connus. L'inconvénient majeur, c'est le temps de compression et de mise en cache nécessaire quand on change un des fichiers. Cependant, la mise en cache permet de diminuer très fortement l'impact de ce comportement. Et puis, quand vous faites un changement sur votre site, vous vérifiez bien toutes les pages, non ? ;-)

Il y a cependant un gros reproche fait à la compression des fichiers en général : ça casse une des bases du web, le fait qu'il soit ouvert. Ainsi, on ne pourra que difficilement reprendre le code CSS d'un site qui compresse, et c'est donc un frein à l'innovation. Faut-il donc perdre en ouverture et en respect du web pour gagner en performance ? 

Je propose une solution simple pour répondre à cette problématique, mais qui ne marche que dans le cadre du système que je viens de présenter. Il suffit, au moment de la concaténation des fichiers compressés, d'ajouter un commentaire contenant des liens absolus vers les fichiers originaux. Ainsi, l'internaute qui s'intéresse à notre code pourra accéder aux fichiers CSS originaux, et récupérer, analyser, comprendre ce code. Les performances sont là (au dur prix de trois ou quatre lignes de commentaire), et le web est sauvé. 

J'envisage d'implémenter ceci dans la prochaine version de Minifier. Que pensez-vous de cette solution ? Avez-vous d'autres idées pour résoudre ce problème ?

Minifiers

Bon, je suis bien d'accord, mon plugin Minifier est absolument génial (lol), mais il n'est disponible que pour Atomik Framework. Sachez donc qu'il existe d'autres projets permettant de mettre en place le même genre de comportement sur votre site. Certains sont plus simples, d'autres bien plus complets. Je ne sais pas si ils fonctionnent exactement comme Minifier, je vous invite donc à les étudier avant de les implémenter.

Voici donc une liste de projets de minimisation de vos fichiers CSS ou JS à la volée : 

Je me rend compte que je n'en connais pas beaucoup, donc si vous en avez d'autres, faites m'en part en commentaire ! :)

N'hésitez pas non plus à troller intelligemment sur les avantages et les inconvénients de la compression des fichiers CSS et JS, ainsi que sur les différentes méthodes disponibles. 

Belle fin de journée à tous ! 

Crédits : Photo "Astronomical Clock" par simpologist

Tuesday, 6 April 2010

Motion Twin, une entreprise atypique pour des jeux délirants

Je suppose que vous connaissez tous Motion Twin. Cette société bordelaise est à l'origine d'environ 25 browser games (jeux par navigateur), dont certains ont cartonné : La Brute et Miniville pour ceux qui ont buzzé, Hordes pour sa qualité et son ambiance, ou récemment Muxxu qui est une plateforme réunissant plusieurs petits jeux. 

J'ai choisi de faire une présentation sur Motion Twin dans le cadre de mes cours d'anglais du Master 1 Informatique. Et comme ce que j'ai lu sur cette entreprise est très intéressant, et que ça m'a inspiré pas mal de choses, je profite de l'occasion pour partager tout ça avec vous. 

Sachez donc que Motion Twin est une SCOP, ce qui en bon français signifie Société Coopérative Ouvrière de Production. Pour faire simple, c'est une SARL sans patron. Tous les employés sont associés, possèdent donc une part égale de la société, et sont égaux sur tous les points. Leurs salaires et leurs "poids" dans l'entreprise ne sont nullement affectés par l'ancienneté ou les compétences. C'est un modèle qui peut surprendre, car il est très rare dans les mondes du Web, du jeu vidéo ou des technologies de l'information en général. Et pourtant, ça tourne, MT ayant généré quasiment 4 millions d'€ de chiffre d'affaire en 2008. 

Si ce modèle d'entreprise vous intéresse, je vous invite donc à lire quatre articles, trois provenant du blog de MT, et un autre présentant une interview d'un Motion-Twinnien par Ouriel Ohayon, du temps où il travaillait chez TechCrunchFr : 

En prime, voici mes slides de présentation. C'est en anglais, ça ne sert pas à grand chose sans la présentation orale qui va avec, mais bon, ça a le mérite d'exister, et peut-être que ça servira à quelqu'un un jour... 

Presentation of Motion Twin - version .odp

Tout ceci m'a inspiré quelques idées, notamment pour l'application d'un modèle similaire à une équipe amateur. Je garde l'idée de côté, et si un jour j'ai le temps de me relancer sérieusement dans un jeu, alors j'essayerai de mettre ça en place. Et ce jour là, don't worry, je vous raconterai ! ;-)

Bon, maintenant, faut que j'aille la faire, cette présentation ! 

Monday, 22 March 2010

Et si tu n'me follow pas...

Quoi ??? Tu ne connais pas encore JCFrog ? Le grand, le beau, le savoureux JCFrog ? Va vite lire son blog, suis-le sur Twitter, deviens fan de lui sur Facebook, tu fais ce que tu veux mais t'as pas le droit de l'ignorer ! ;-)

Monday, 1 March 2010

Mon tutoriel sur Atomik Framework maintenant sur le Site du Zéro

Hello ! 

Je vous fait un petit billet pour vous dire que je suis vivant (je me concentre en ce moment sur la publication sur ideonimbus plutôt que sur ce blog), et que mon tutoriel sur Atomik Framework a été diffusé sur le Site du Zéro : Atomik Framework : un framework PHP simple et léger

N'hésitez pas à y faire un tour, j'ai apporté quelques modifications intéressantes, notamment sur le système de layout. 

Bonne journée ! 

Friday, 12 February 2010

[FastBillet] Avortement : droit au choix

Bonjour ! 

Un billet rapide et un poil hors sujet (mais j'm'en fous, j'fais c'que j'veux avec mon blog ! ). Je tiens juste à signaler que je soutiens pleinement l'initiative de Gaëlle-Marie Zimmermann pour le respect du droit au choix de l'avortement

En réponse à l'émergence de site usant de techniques douteuses pour jouer sur la faiblesse des jeunes femmes qui se renseignent sur l'avortement, La Peste a lancé le site sos-ivg.net. Ce site présente, sans prise de position aucune (sauf celle du respect de la loi française, qui donne le droit au choix), des informations sur l'interruption volontaire de grossesse, la contraception, les centres de conseil, les démarches à faire pour un avortement, etc. 

Je vous invite à visiter ce nouveau sur l'avortement, et si vous souhaitez en savoir plus sur la démarche qui a amené à sa création, voici les liens à lire : 

Je vous souhaite à tous une bien belle journée ! 

Wednesday, 10 February 2010

[Tutoriel] Atomik Framework : installation, configuration et prise en main

Bonjour à vous, chers lecteurs ! 

Sur une question de @rkueny sur Twitter, et après quelques recherches auprès de mon grand ami Google, j'ai constaté qu'il n'y avait pas de ressource française sur Atomik Framework, mon framework PHP chouchou. Je me dois donc de palier à cette lacune du web francophone. Et comme une bonne chose ne vient jamais seule, la version 2.2 d'Atomik Framework vient de sortir ! 

Dans ce tutoriel, je vais vous apprendre à : 

Continue reading...

Monday, 8 February 2010

Un design flambant neuf pour ideonimbus

Dire que j'ai créé ce billet le 23 juillet 2009... Et que je le publie le 8 février 2010 ! Il s'est donc passé plus de 6 mois depuis mes premières recherches sur le nouveau design d'ideonimbus et la fin de son intégration... 6 mois durant lesquels je n'ai à peu près rien fait, pris entre mes cours, le travail, les exams, et d'autres priorités. Et 6 mois durant lesquels il faut avouer qu'ideonimbus a beaucoup stagné. 

Mais tout ceci est terminé ! Oui Madame ! Oui monsieur ! Parce qu'aujourd'hui, le nouveau design d'ideonimbus est en ligne !!! 

Aperçu du nouveau design d'ideonimbus

Bien entendu, je n'allais pas vous livrer un nouveau design comme ça, dans le vent. Vous découvrirez donc sur ideonimbus une nouvelle idée, orientée technologie et Internet, intitulée : Carte d'identité numérique ! Je vous laisse vous rendre sur le site pour savoir de quoi il en retourne. 

Et pour finir, si vous ne savez pas ce qu'est ideonimbus, je vous invite à lire mon billet de présentation : Et si on partageait nos idées ? Ouverture d'ideonimbus.fr, site de partage d'idées et de concepts et mon billet Ideonimbus : Réponse à l'argument du vol des idées.

J'espère voir vos plus belles idées d'ici peu sur ideonimbus.fr ! :)

Monday, 25 January 2010

6e République des Blogs à Lyon

Bonjour les loulous ! 

À vous, amis lyonnais, mais aussi à ceux d'ailleurs qui voudront faire le déplacement, je vous annonce que le mercredi 10 février prochain se tiendra la 6e édition de la République des Blogs. La République des Blogs est un genre de webevent / apéroblog, à la sauce politique puisque organisée par Romain Blachier, l'homme politique le plus connu de tout le 7e arrondissement de Lyon !!! 

Cet événement se déroulera donc à partir de 20h dans le 7e, à Lyon, et précisément au café Chez Thibault, 80 rue Montesquieu. Pour les fainéants, une petite Google Map... 

Pour plus de précisions sur cet événement, sur son déroulement, ou tout autre information, je vous invite à vous rendre sur le blog de Romain, lequel saura vous répondre aimablement et surtout de bien meilleure manière que moi, vu que c'est lui qui organise... 

Bon, on récapitule... Si on vous demande ce que vous faites le 10 février, vous répondez quoi ? ... Allez un p'tit effort... OUIIII ! Vous dites que vous êtes à la République des Blogs ! Bravo ! 

Fiche technique : 

  • Mercredi 10 février 2010
  • à partir de 20h
  • Café "Chez Thibault"
  • 80, rue Montesquieu
  • Lyon 7e
  • avec plein de gens sympas et de politiques

Liens : 

Merveilleuse journée à tous ! (copyright jaguie :-° )

- page 13 of 21 -