Ces gadgets reposent chacun sur du Javascript généré dynamiquement par notre serveur. Le petit régime s'est fait en deux étapes

Obfuscation :

Les scripts ont été écrits (et sont maintenus) par un humain qui a une fâcheuse tendance à donner des noms explicites aux variables - des noms de plus d'une lettre - à aller à la ligne de temps en temps... C'est là qu'entrent en scène des outils d'obfuscation comme YUI Compressor de Yahoo. Leur objectif est double :

  • réduire la taille du code : toutes les variables sont renommées avec des noms d'une lettre de préférence, les retours chariot sont supprimés, etc.
  • rendre le code incompréhensible pour lutter contre le reverse-engineering et la copie

Dans notre cas, c'est le premier aspect qui nous intéressait. Seule difficulté : le Javascript est généré dynamiquement à partir de JSP et ce sont donc des templates de Javascript qu'il a fallu obfusquer. Cela a nécessité un travail un peu fastidieux pour rendre ces fichiers compréhensibles par YUI Compressor, puis retransformer en templates les résultats obtenus. Bref La transformation a permis de passer de 4,1Ko à 3,4Ko pour la météo et de 3.8Ko à 3,3Ko pour les actualités, soit une perte de poids entre 20 et 26%

Compression

Jusqu'à présent, les scripts étaient servis non compressés, pour préserver un peu la puissance de calcul du serveur. Ce n'est plus le cas ! Après une légère modification de la configuration du serveur HTTP (activation du module deflate sur Apache) une débauche de calculs (comme les scripts sont dynamiques, on ne peut pas se contenter de les comprimer une fois pour toutes) a permis de passer de 4,1Ko à 948o pour le script correspondant au gadget météo et de 3,8 Ko à 2 Ko pour le script correspondant aux actualités, soit une perte de poids de l'ordre de 47 à 78%. Il est à noter que pour les actualités surtout, le poids dépend beaucoup des actualités du moment, mais c'est l'ordre de grandeur qui importe.

Résultats

Finalement, en combinant les deux, on passe de 4,1Ko à 845o pour la météo et de 3,8Ko à 1008o pour les actualités, soit une perte de poids de 74 à 80%.

Les résultats sont synthétisés dans le tableau ci-dessous :

ComposantPoids d'originePoids compresséPoids obfusquéPoids obfusqué et compressé
météo100%22%83%20%
actualité100%53%87%26%

En conclusion, grâce à YUI Compressor et au module deflate, nos gadgets ont perdu 6K avant l'été !