Version imprimable http://spipeur.free.fr/article.php3?id_article=13
Le site des utilisateurs de SPIP

Un contenu dynamique indépendant du cache

Par Eric, le mercredi 11 août 2004.

Le principe et la force de SPIP est d’utiliser un cache qui accélère l’affichage des différentes pages du site. Cependant dans certains cas, peut-être aimeriez-vous afficher un contenu dynamique indépendant du système de cache, c’est à dire un contenu pouvant changer même lors de l’affichage d’une page depuis le cache.

Vous êtes-vous jamais demandé comment rendre dynamique les pages se trouvant dans le cache de SPIP afin d’afficher des informations en temps réel (nombre total d’articles, nombre de total de commentaires postés, etc..)

Pour illustrer notre propos, nous allons réaliser un module totalement inutile, puisque son seul usage sera d’afficher un nombre aléatoire compris entre 0 et 100. (Cela permet rapidement de constaté que l’affichage changera même lorsque la page contenant notre module est rechargée depuis le cache)

Dans un premier temps, nous allons développer notre encart dynamique de la même manière que pour les autres pages du site :
-  Nous créons donc un fichier encart.php contenant le code suivant :

<?php
$fond = "encart";
$delais = 0;
include ("inc-public.php");
?>
(Ici il est très important de mettre 0 comme délai car notre encart devra être recalculé à chaque affichage)

-  Nous créons ensuite le fichier encart.html dans lequel figurera le code réel de notre encart comme par exemple :

<?php
echo rand(0,100);
?>
(Ce code surpuissant affiche simplement un nombre aléatoire compris entre 0 et 100)

Il ne reste plus qu’à insérer cet encart dynamique au sein des pages voulues. Le premier réflexe serait de faire un <INCLURE (encart)>, mais avec cette méthode le contenu de notre encart ne changera que lors du recalcule de la page qui le contient, une fois cette page dans le cache, le contenu de notre encart sera toujours le même.

Pour rendre notre encart réellement dynamique, il suffit de l’appeler via une balise <iframe></iframe> comme par exemple :


<iframe border=0 frameborder=0 height=50 width=100 scrolling=no src="encart.php"></iframe>
Comme une balise <iframe> se comporte comme un mini navigateur, SPIP interprète correctement le fichier encart.php dans lequel le délai à été mis à 0. A chaque affichage de la page, la page encart.html est alors recalculé par SPIP avant d’apparaître dans l’iframe.

Vous pourrez trouver une illustration de ce principe dans cet article


Spip’eur - Scripts, articles, ressources, astuces pour SPIP http://spipeur.free.fr/article.php3?id_article=13