Un petit régime avant l'été ?
Par Benjamin le dimanche 26 avril 2009, 18:00 - technique - Lien permanent
À l'occasion d'une petite campagne d'amélioration des performances de nos services sur laquelle nous reviendrons prochainement, nos gadgets météo et actualité viennent de suivre une cure amaigrissante.
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 :
| Composant | Poids d'origine | Poids compressé | Poids obfusqué | Poids obfusqué et compressé |
|---|---|---|---|---|
| météo | 100% | 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é !
Si cet article vous a intéressé, n'hésitez pas à nous laisser un commentaire ou à vous abonner à notre flux RSS.
Peut-être serez-vous également intéressé par ces articles :
Commentaires