Comment mettre un flux RSS en cache

On peut économiser les ressources en plaçant le flux converti sous forme HTML dans un fichier plutôt que de parser le code XML et le convertir en HTML à chaque affichage.

Cependant, ce fichier en cache doit être mettre à jour automatiquement et régulièrement, par exemple toutes les heures, comme dans l'exemple de code ci-dessous.

On remplacera dans la page web qui présente le flux le code usuel pour appeler RSSLIB (l'URL est un exemple):

<?php
require_once("rsslib.php");
$url = "http://www.scriptol.fr/rss.xml";
echo RSS_Display($url, 15, false, true);
?>

Par le code suivant:

<?php
$cachename = "rss-cache-tmp.php";
$url = "http://www.scriptol.fr/rss.xml"; 
if(file_exists($cachename))
{
  $now = date("G");
  $time = date("G", filemtime($cachename));
  if($time == $now)
  {
     include($cachename);
     exit();
  }
}
include("rsslib.php");
$cache = RSS_Display($url, 15, false, true);
file_put_contents($cachename, $cache); echo $cache; ?>

Pour une périodicité différente de mise à jour, on changera le format de date() et le test de comparaison.

Par exemple, pour une mise à jour toutes les dix minutes, le format sera:

  $time = date("i", filemtime($cachename));

et le test de comparaison deviendra:

  if(intval($time) / 10  == intval($now) / 10)

Voir la démonstration: Mise en cache d'un flux RSS.

Télécharger l'archive sur la page de l'article: Lecteur RSS.