Il fut un temps lorsqu'on programmait pour le web où l'on devait calculer le volume de transfert des données pour s'assurer que le téléchargement d'une page serait suffisamment rapide (lire ici "tolérable) sur un modem 56k.
De nos jours, avec les connexions à haut débit, ma préoccupation est à un tout autre niveau. Les sites web sont de plus en plus sollicités et sont constamment enrichis de contenu dynamique (DHTML, Ajax, Prototype, jQuery, script.aculo.us, YUI) et ce, dans le but de rendre l'expérience de l'utilisateur plus agréable. Le problème ici n'est plus du côté de l'utilisateur, mais du côté du serveur. Désormais, on tente d'optimiser la charge des serveurs web et des bases de données (workload, replication, optimisation des requêtes, etc.) ou d'utiliser des techniques de mise en cache. Dans le cas des sites hautement sollicités, à titre d'exemple Amazon, du contenu statique est même délégué à un autre domaine (images-amazon.com) qui contient plusieurs sous-domaines entièrement dédiés à cette tâche (http://ecx.images-amazon.com, http://g-ecx.images-amazon.com, http://z-ecx.images-amazon.com).
Nombreuses sont les techniques permettant de désengorger les serveurs et de limiter le transfert de données à grande échelle. Une des bonnes habitudes qu'un programmeur peut utiliser, même sur un site web modeste, est la compression JavaScript à l'aide du YUI Compressor.
À partir de la Yahoo! UI Library, les développeurs ont accès gratuitement à un outil permettant non seulement de compresser le code JavaScript, mais aussi de l'obfusquer, permettant ainsi de réduire la taille de la librairie et d'en compliquer la compréhension (le code n'étant pas compilé, il est toujours possible de faire du reverse engineering, mais la patience en prend un coup!).
Voici un exemple d'utilisation :
- Java doit préalablement être installé sur la machine
- Télécharger la version la plus récente de l'utilitaire (présentement la version 2.4)
- Extraire son contenu et repérer le fichier "yuicompressor-2.4.jar" dans le répertoire "build"
- Ouvrir un invite de commande
- La syntaxe d'exécution est la suivante :
java -jar yuicompressor-2.4.jar source-o destination
où -o spécifie le nom en sortie du fichier une fois compressé - J'utiliserai la librairie prototype.js pour démontrer concrètement l'efficacité de la compression (la version 1.6.0.3 originale pèse 126 Ko)
- Dans ce cas-ci, la commande exacte sera :
java -jar yuicompressor-2.4.jar prototype-1.6.0.3.js -o prototype-1.6.0.3-min.js - Une fois compressé, prototype-1.6.0.3-min.js pèsera 73 Ko, soit un taux de compression d'environ 40%. Ceci est dû au fait que les espacements, les tabulations, les sauts de lignes et les commentaires sont retirés alors que les noms des fonctions, des classes et leurs propriétés restent les mêmes.