JeuWeb - Crée ton jeu par navigateur
Un cache, dans mon cas ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Un cache, dans mon cas ? (/showthread.php?tid=2648)

Pages : 1 2


Un cache, dans mon cas ? - Seals - 05-06-2008

Bonjour,

je me pose une question, et avant de vous la poser voici la situation :

dans mon jeu, sur l'acceuil de la page membre il y a un menu avec une liste de demandes de combat lancé au joueur, avec possibilité d'accepter ou non chaque combat.

Comme ça ce trouve sur l'acceuil de la page membre, la requête qui affiche cette liste peu être exécuté plusieurs fois par minutes (dès que le membre affiche la page quoi), donc plutôt lourd pour un "petit" truc.

Je me suis donc dis, pourquoi pas mettre un cache, qui mettrais la liste à jour toute les minutes ?
Un cache simple comme celui-ci : http://www.siteduzero.com/tuto-3-10427-1-un-systeme-de-cache-simple.html


Maintenant ma question :
Comme il va falloir créer autant de fichiers cache que de membres (vu que la liste est évidement différente pour cache membre), au finale qu'est ce qui est plus lourd, la requête ou les fichiers cache ? :heuuu:


Merci d'avance :bisou:


RE: Un cache, dans mon cas ? - thelos - 05-06-2008

Ca dépend Big Grin
Ce ne t'aide pas ?

En fait ce n'est pas vraiment dur, tout cela dépend de la fréquence à laquelle la page sera vue.
Ainsi si elle est vue toutes les 10mn, le système ne sera pas rentable si le cache est mis à jour toutes les minutes.

Je ne sais pas quelle est l'importance du combat dans ton jeu, mais à ta place je ferais une liste placée en cache mise à jour toutes les 15mn ou sur demande du membre.

Le nombre de fichiers de cache n'a pas de réel impact si ce n'est le nombre d'exécutions nécessaire à les créer/mettre à jour


RE: Un cache, dans mon cas ? - Studio Gamboo - 05-06-2008

Si le nombres d'accès à cette liste sur un temps donnés est supérieur à la fréquence de sa mise à jour (demande de combats) alors met en cache oui, sans hésitation.
Je te conseille d'ailleurs APC si tu à accés pour mettre en cache. Sinon du plain text,xml ou json dans des fichiers fonctionne très bien également Smile


RE: Un cache, dans mon cas ? - Seals - 05-06-2008

Merci à vous deux Wink

thelos je n'avais pas pensé laisser le membre mettre à jour lui même la liste, je pense que c'est ce que je vais faire !


edit :
existe t-il un moyen en xAjax (je ne connais pas le JS) pour recharger une liste automatiquement dès qu'il y a une nouvelle entré dans une table ?
(sans recharger tous les x minutes)


RE: Un cache, dans mon cas ? - Studio Gamboo - 05-06-2008

Non, le javascript ne peut que "demander" des infos au serveur, le serveur ne peut pas envoyer des infos aux client tout seul Smile


RE: Un cache, dans mon cas ? - Studio Gamboo - 05-06-2008

Oui j'ai hésité à en parler mais étant donné que je ne connais pas du tout la technologie, je n'ai pas voulu la ramener Big Grin
Un petit tuto de ta part ça serait vraiment intéressant !


RE: Un cache, dans mon cas ? - Seals - 06-06-2008

Merci ! Big Grin

Je vais allez voir demain ce qu'est la methode Comet, quand j'aurais dormis, parce que là je suis fatigué et je ne risque pas d'apprendre grand chose... xD


Sinon, j'ai tenté quelque chose pour "simuler" un peu ce que je veux faire,
mais j'ai un problème avec mon script, je vais d'ailleurs créer un sujet pour ce problème Confused


RE: Un cache, dans mon cas ? - Ruz - 06-06-2008

vivement l'exmple, ca m'intéresse très fortement et rapidment, moi, ce truc COMET ^^
t'aurais un lien vers une source, ou du code, pour voir un peu la manière d'implémenter ca?


RE: Un cache, dans mon cas ? - Shivaan Keldon - 06-06-2008

personnellement, je suis contre l'utilisation des caches en ce qui concerne des données utilisateurs. les caches doivent être réservés pour des données qui sont statiques, ou ne changent quasi pas (tel un menu que tu modifies tous les 36 du mois)

ici, si j'ai bien compris, il s'agit de "provocation en duel" sur une page. donc chaque utilisateur est susceptible d'en recevoir à tout moment. c'est du contenu dynamique !
je vois que certains répugnent à utiliser ajax pour ce genre de choses, mais pourtant, c'est la meilleure solution à ton problème. il suffit de s'y prendre intelligemment Wink

je t'explique le principe. en général, quand on parle d'ajax, les gens s'imaginent charger un fichier xml ou un objet json de manière asynchrone. donc ici de faire une requête sql qui ramènerai, par ex, les 5 dernier duels. et de programmer ça genre toutes les secondes afin que ça soit réactif

essayons de voir ça différemment. supposons que les 5 derniers duels ne soient chargés qu'une fois, en même temps que la page. si tu mets l'id du dernier dans une variable javascript, tu es capable de savoir ou tu en es dans tes duels.
il te suffit donc d'exécuter une requête ajax toutes les x secondes (dans ton cas, 5 me parait un pas trop mauvais compromis) qui aille chercher tous les duels, pour l'utilisateur, supérieur à l'id que tu as sauvegardé et te ramène tout ça dans un objet json
il ne te reste donc plus qu'à regarder si ton objet est vide. si ce n'est pas le cas, alors tu supprimes dynamiquement les duels obsolètes et ajoutes les nouveaux

faire les choses ainsi ne coute pas grand chose, car la requête sql étant vide la plupart du temps, elle est quasi instantanée. idem pour l'objet json qui ne pèsera que quelques octect (car vide), et donc sera transféré très rapidement

voilà, j'espère que ça t'aidera. n'hésites pas à le demander si tu veux que je te fasse un snippet (exemple de code)


RE: Un cache, dans mon cas ? - Seals - 06-06-2008

Salut,

effectivement, ça semble plus intéressant que d'utiliser un cache !
et bien si tu à le temps, je ne serai pas contre un exemple de code Wink

je te remercie d'avance. Smile