Indiquer la fréquence de mise à jour d'un fil de syndication au format RSS

En bref

Les fils de syndication, et particulièrement ceux au format RSS, connaissent un succès chaque jour croissant. Mais on voit en parallèle s'accroître la consommation de bande passante et de temps serveur. Comment faire pour ne pas effectuer de multiples requêtes inutiles sur des informations actualisées tout au plus quotidiennement ?


Les moyens de veille et d'information ont profondément changé avec l'avènement de la syndication. Nous sommes passés de l'ère de la lettre d'information mensuelle ou hebdomadaire, parfois quotidienne, à une surveillance souvent horaire d'un nombre de sites toujours plus important, via les outils de syndication de contenu. Ceci peut entraîner une consommation inutile et non négligeable de bande passante et de temps serveur. Il s'avère donc indispensable de limiter le trafic lié à la syndication, autant côté client que côté serveur.

La théorie

Un début de prise en compte

Le format RSS2.0 permet l'ajout d'un élément ttl dans l'entête d'un fil. La valeur de cet élément correspond à une durée en minutes indiquant la durée de vie (Time To Live) de l'information.

Voici un exemple minimal :

<?xml version="1.0"?>
<rss version="2.0">
 <channel>
  <title>Mon site</title>
  <link>http://www.example.org/</link>
  <description>Ma description</description>
  <ttl>90</ttl>
  <item>
   <title>Une actu</title>
   <link>http://www.example.org/2005/01/01</link>
   <description>Un peu de texte pour décrire mon info</description>
  </item>
 </channel>
</rss>

Cet exemple indique de ne pas réinterroger ce fil avant 90 minutes.

Un mécanisme d'évitement

Le format RSS0.91 avait introduit la possibilité d'indiquer les jours et heures durant lesquels il n'y a pas de publication. Ces éléments existent également en RSS2.0 (mais pas en RSS1.0 dont nous allons parler plus loin).

En voici un exemple en RSS0.91 :

<?xml version="1.0"?>
<rss version="0.91">
 <channel>
  <title>Mon site</title>
  <link>http://www.example.org/</link>
  <description>Ma description</description>
  <image>
   <title>Mon image</title>
   <url>http://www.exemple.org/images/logo.png</url>
   <link>http://www.exemple.org/</link>
   <width>100</width>
   <height>100</height>
   <description>Mon logo</description>
  </image>
  <skipDays>
   <day>Monday</day>
   <day>Tuesday</day>
   <day>Wednesday</day>
   <day>Thursday</day>
   <day>Friday</day>
  </skipDays>
  <skipHours>
   <hour>1</hour>
   <hour>2</hour>
   <hour>3</hour>
   <hour>4</hour>
   <hour>5</hour>
  </skipHours>
  <item>
   <title>Une actu</title>
   <link>http://www.example.org/2005/01/01</link>
   <description>Un peu de texte pour décrire mon info</description>
  </item>
 </channel>
</rss>

Ici, rien n'est publié en semaine, ni entre 1 heure et 5 heures du matin.

Une extension plus convaincante

Il est heureusement possible de décrire son rythme d'actualisation de manière plus fine grâce à RSS1.0. Son module syndication permet en effet de spécifier :

Voici un exemple en RSS1.0

<?xml version="1.0"?>
<rdf:RDF
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
 xmlns="http://purl.org/rss/1.0/">
 <channel rdf:about="http://www.example.org/rss/">
  <title>Mon site</title>
  <link>http://www.example.org/</link>
  <description>Ma description</description>
  <sy:updatePeriod>monthly</sy:updatePeriod>
  <sy:updateFrequency>2</sy:updateFrequency>
  <sy:updateBase>2005-01-01T12:00+00:00</sy:updateBase>
  <items>
   <rdf:Seq>
    <rdf:li resource="http://www.example.org/rss/2004/08/01/" />
   </rdf:Seq>
  </items>
 </channel>
 <item rdf:about="http://www.example.org/rss/">
  <title>Une actu</title>
  <link>http://www.example.org/rss/2005/01/01/</link>
  <description>Un peu de texte pour décrire mon info</description>
 </item>
</rdf:RDF>

Pour utiliser ce module il faut ajouter l'espace de noms dans l'élément rdf. Ici, cet espace étant sy, on ajoute à l'élément racine <rdf> l'attribut xmlns:sy="http://purl.org/rss/1.0/modules/syndication/". Puis nous ajoutons nos trois éléments de fréquence de mise à jour dans la déclaration du canal (channel) :

La date de référence (updateBase) est exprimée sous la forme aaaa-mm-jjThh:mm+hh:mm. Les indications hh:mm qui suivent le +, ou le - suivant les cas, spécifient le décalage par rapport au temps universel (UTC). Une Note du W3C sur les formats de date et d'heure précise la syntaxe à utiliser pour cette date.

Dans notre exemple, le fil est donc mis à jour deux fois par mois, soit tous les quinze jours. La date de référence étant le 01/01/2005, la prochaine vérification devra avoir lieu le 16/01/2005 à 12:00.

La pratique

Qu'en est-il à présent de l'implémentation dans les applications RSS ? Le travail à effectuer est minime, mais est-il utile ?

Les outils de contenus

La plupart des outils de blogs ne proposent rien pour régler ces paramètres. Qu'à cela ne tienne, nous avons plusieurs possibilités :

Les outils de consultation

De ce côté aussi, peu d'outils comprennent cette extension. Là encore, vous pouvez :

Les autres outils

Il se peut que vous vous demandiez si ce module présente un intérêt réel. Il est vrai que peu d'outils le prennent actuellement en compte mais RSS est un format jeune et il n'y a pas que les agrégateurs qui lisent les fils de syndication. C'est aussi le cas d'annuaires, de moteurs de recherche, etc. Sans compter d'autres outils qui vont certainement voir le jour.

Conclusion

Indiquer la fréquence de mise à jour de votre fil RSS demande donc peu de travail et représente un investissement pour l'avenir. Il s'agit d'optimiser la charge du réseau et du serveur en limitant le rythme des requêtes. Mais il peut aussi s'agir d'accélerer la fréquence pour un site d'actualités en temps réel. Libération, l'Humanité ou RTL possédent déjà un fil de syndication et on peut parier sans grand risque que les autres grands journaux vont les suivre.

En combinant l'ensemble des techniques exposées, surtout si vous utilisez RSS2.0, vos lecteurs n'auront plus aucune excuse s'ils se demandent encore quand est prévue la prochaine publication.

Note : —

Cet article fait référence à RSS0.91, RSS1.0 et RSS2.0, qui, en dépit de leur nom, ne représentent pas des évolutions d'un seul et même format, mais des formats différents. C'est pourquoi certaines possibilités ne se retrouvent pas d'une version sur l'autre. Pour plus d'informations, voir l'introduction à RSS .


Une question, une remarque ? Écrivez à l'auteur à fabrice.bonny@openweb.eu.org.

Page valide XHTML 1 Strict, CSS2 et accessible AA.
Ce site s'affiche mieux dans un navigateur conforme aux standards, voici pourquoi.
Site hébergé par l' APINC et actualités dopées par Dotclear.