[RSS] Comment on gère les données ? Au coup par coup ou tout d'un coup?

Eléphanteau du PHP | 27 Messages

16 mai 2009, 11:47

Bonjour,

je souhaite extraire des infos d'une base de donnée pour les mettre dans un xml qui sert donc de fil RSS.

Ma question est simple:

-faut-il ajouter un item au xml à chaque ajout de news et donc supprimer les anciens items par la même occasion. A chaque rafraichissement de la page par le visiteur, aucun appel a la BDD n'est effectué.

OU

Faut - il générer a chaque rafraichissement les informations provenant de la base en mettant un LIMIT 0, 20 par exemple, dans la requete mysql.

J'ai vu sur divers site que la page RSS était un php et non un xml directement et il y avait une variable genre ?rub=2 qui affiche une page différente selon la variable transmise. Je pense donc que le flux est généré a chaque appel mais j'ai quelque doute... car on perd l'avantage d'avoir moins de requete en utilisant le RSS.

Comment faite vous, ou quelles choix utilisent les solutions les plus connus ?

merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 sept. 2009, 16:34

Bonjour,

Je vais répondre avec beaucoup de retard à cette question, mais le sujet est intéressant.

D'un point de vue optimisation, une (ou plusieurs) requête SQL est forcément plus gourmande en ressource qu'un accès à un fichier texte.

Le + simple est de générer à la volée le XML avec une requête SQL.
Le + optimisé serait de créer un fichier XML en dur et de ne le mettre à jour qu'à chaque ajout/modification d'un élément.
A mi-chemin entre ces deux solutions, tu peux appliquer la première en ajoutant un cache de X secondes/minutes/jours pour éviter de faire des requêtes à chaque demande.

Il n'y a pas de meilleure solution dans l'absolue, cela dépend de la fréquentation de ton site, de la fréquence des mises à jour du XML et également de l'importance ou non que ton RSS soit immédiatement à jour dès publication d'une nouvelle news.
Quand tout le reste a échoué, lisez le mode d'emploi...