Documents publiés » Technologies Web »

Sauvez un câble, utilisez du RSS cachable

Ce document est un (court) plaidoyer pour que RSS contribue (encore plus) à rendre le Web utile et uilisable par tous.

RSS (RDF Site Summary) est une technologie utilisée de plus en plus fréquemment pour permettre la syndication d’informations datées (de nouvelles en particulier) ; en tant que telle, elle peut se révéler pour les producteurs de contenu un outil très efficace de diffusion et de publicité du dit contenu, et pour les utilisateurs, un moyen de suivre un grand nombre de sites à peu de frais.

Un défaut affecte cependant assez souvent les "fils" RSS (et de manière générale, les contenus générés dynamiquement) : ils n’utilisent pas de manière adéquate les propriétés HTTP permettant d’économiser de la bande passante grâce aux technologies de cache.

Ce défaut entraîne une sur-consommation de bande-passante qui affecte autant les utilisateurs que les producteurs de contenu, et est particulièrement sensible dans le cas de RSS dans la mesure où les clients RSS répètent typiquement leurs requêtes un nombre important de fois par jour, alors même que la plupart du contenu des fils RSS ne change que peu ou prou dans cette période.

Outre la bande-passante, cela signifie aussi que les clients RSS doivent passer plus de temps à vérifier si le contenu du fil RSS a été modifié ou non.

Ainsi, si vous produisez un fil RSS, assurez-vous qu'il soit cachable sous HTTP, et s'il ne l’est pas, référez-vous à l’excellent guide pour rendre un site Web cachable.

En tant qu'utilisateur, vérifiez que les fils RSS auquels vous êtes abonné utilisent de manière correcte les propriétés HTTP de cache, et informez les webmestres des sites incorrects pour qu'ils corrigent leur configuration.

En (petit) bonus, un script shell pour vérifier rapidement qu'un site est cachable (pratique pour vérifier une liste de sites, par exemple):


 # takes an HTTP URI as parameter
 # and check if it supports the Last-Modified/If-Modified-Since validation
lm=`HEAD $1|grep -i Last-Modified|cut -d : -f 2-`
echo "Checking with validator set to " $lm >&2
if [ `HEAD -H "If-Modified-Since: $lm" $1|head -1|cut -d " " -f 1` == "304" ]
        then echo $1 " has valid HTTP caching"
        else echo $1 " does NOT support HTTP caching"
fi

Ce script utilise l’utilitaire HEAD fourni sous debian dans le paquet libwww-perl.