Le 24/07/2012 dans DevBlog

Limiter la bande passante en local

Lorsque l’on développe un site web en local, en général, c’est le bonheur. Tout va vite, les uploads de vidéos de 500mo se font en une seconde et le loader ajax n’apparaît même pas.
Le jour de la mise en production, évidemment cela marche moins bien…

Il est de notre responsabilité de développeur de s’assurer que nos utilisateurs, qu’ils soient fibré et à 50m du datacenter ou connecté en 56k chez Mamie puissent utiliser le site dans de bonnes conditions. Les comportements Javascript notamment doivent prendre en compte les éventuelles lenteur réseau.

La vitesse nous cache des choses

Speed is wrong

Il peut aussi devenir nécessaire pour un développeur de passer d’un environnement « tout local qui trace » a un contexte plus réel, voir très lent. Mon exemple du jour est un formulaire d’upload Ajax beaucoup trop rapide, pour lequel je souhaite développer une barre de progression. Mon fichier, à peine droppé, et reçu par mon serveur local en moins d’une seconde ! Pour la progression, on repassera.

Bref le besoin n’est pas nouveau et il a existé à une époque des outils pour le navigateur Firefox (Firefox Throttle), pour Mac (speedlimit) et bien entendu des outils en ligne de commande sous Linux (tc, iprelay).

Ces solutions ont leurs charmes, mais elles sont soit complexe (quelqu’un veut lire le How-To de tc ?), soit obsolète (Firefox Throttle n’existe plus), soit uniquement disponible sur Mac… On peut aussi citer Charles Proxy, qui est un logiciel de surveillance réseau payant permettant de limiter la bande passante.

Utilisation de trickle

La solution que j’ai finalement mis en place dans mon environnement de développement se nomme trickle.
Il s’agit d’un outil léger pour modifier la bande passante dans un espace utilisateur. Il peut fonctionner en mode collaboratif (avec un deamon) ou en mode autonome.

Voici un exemple d’utilisation simple :

trickle -u 10 -d 30 firefox http://local.ponies-forever.com/

On ouvre Firefox avec pour limites 10Ko/s en upload et 30Ko/s en download (cumulé). L’outil est disponible un peu partout (OpenBSD, MacPPC, Sun Solaris, FreeBSD et Linux/i386) et se trouve dans les dépôts Ubuntu.

Avec la session de Firefox ainsi lancée, je peux surfer sur mon site en local à une vitesse digne d’un bon vieux modem 56k !