JeuWeb - Crée ton jeu par navigateur
Cache - 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 : Cache (/showthread.php?tid=4715)



Cache - atra27 - 08-04-2010

J'ai déjà regardé mais apparemment y a rien qui correspond plus ou moins a mon probléme.

Actuellement, j'ai un trois fonctions (check_cache, generate_cache et start_cache)
Je ne m'en sert que pour le classement (lourd car il faut calculer les points de tous les joueurs) qui se régénère toutes les 12 heures.

Quelles autres utilisations pourrai t'on en faire? (a par des caches de 1 a 2 minutes j'ai pas trop l'utilité sur d'autres pages mais sais t'on jamais...)

Et aussi actuellement j'ai un dossier cache avec un sous-dossier general et des sous dossiers par session (id de session) pour cacher les choses spécifiques (pas encore l'utilité de ce systeme)

J'ai donc en gros deux question:
Utilisez vous un systeme de cache, et pour quelles pages?
Comment gerez vous les caches individuels?


RE: Cache - Sephi-Chan - 08-04-2010

La dernière fois où j'ai eu un cache important à gérer, c'est pour ma version de JeuWeb, pour le menu de sélection des sous-forums.

Quand on n'est pas connecté, le cache est global, il gère juste l'affichage des sous-forum. Il épargne à la base de données des requêtes inutiles (le cache est automatiquement rafraichit quand un sous-forum est ajouté).

Quand on est connecté, en revanche, le fonctionnement est bien plus complexe puisque j'affiche une pastille contenant le nombre de messages non-lus dans chaque section (cf. les captures jointes).

Et ma solution s'approche de la tienne, mon répertoire /tmp/caches contient des fichiers portant l'identifiant de l'utilisateur, du coup ça devient assez simple. Les caches expirent quand un sujet est posté. Quand un utilisateur passe après l'expiration, l'opération est assez coûteuse en ressources.

En dehors de ce genre de cas un peu plus élaborés, il peut-être intéressant — à plus forte raison quand on utilise un framework (coûteux en ressources) — d'utiliser des caches d'actions pour les pages qui ne changent pas du tout, afin de ne même pas passer par le processus classique des requêtes adressées à l'application.

Beaucoup de choses peuvent être cachées : la liste des news, la page de détail d'une news (avec ses commentaires), la liste des joueurs, etc. À partir du moment où la page est plus vue qu'écrite, ça vaut le coup.


Sephi-Chan


RE: Cache - My Hotel - 08-04-2010

Oui, il ne faut pas avoir peur de multiplier les fichiers de cache, même pour quelques minutes.
De mon côté, je met en cache même la boîte de MP etc...

En gros si la page est lue plus d'une fois entre chaque modification, alors le cache est intéressant (vu qu'écrire/lire un fichier est pas très consommateur...).

Bye

P.S : cool de voir que JeuWeb v2 n'est pas abandonné Wink


RE: Cache - atra27 - 08-04-2010

Hum hum ouais cacher le nombre de messages ok sauf que je le fait en session (sinon sa faisait un count pour les messages a chaque page donc bof bof...) et puis ecrire un fichier pour stocker un chiffre....

Par contre pour la page messagerie... je vois pas trop l'intérêt de mettre en cache....
Perso je regarde a 2 moments, a la connexion, et quand j'en reçois un nouveau...
Le script est limité a 10 messages affichés (30 pour les premiums :p ) donc niveau requête sa reste gérable...

Je pense aussi cacher la liste des stations plutôt que de recharger depuis la bdd les coordonnées a chaque fois...


RE: Cache - Sephi-Chan - 08-04-2010

Le cache dont je parle stock toute la sortie HTML de la news, donc l'économie est conséquente.
Et puis, pour les compteurs, je t'invite à ajouter à ta table de news une colonne comments_count, que tu entretiens à chaque fois que les news sont commentées (et les commentaires supprimés/cachés/etc).


Sephi-Chan


RE: Cache - atra27 - 09-04-2010

C'est une bonne idée dans le sens ou les news ne changent pas souvent.

La je parlais de la messagerie in-game ou je stocke le nombre de messages en session pour pas refaire un count a chaque fois.


J'ai réfléchis (noooooon???) et enfaite, outre le classemet, j'ai adapté mon systeme de cache a la page "carte" (c'est pasle nom dans le jeu mais c'est plus clair ici :p)

Vu que la carte est pas sencée changer toutes les 30 secondes vu que l'ajout de base ou de chemin se fait via l'admin (et on va rajouter des bases statiales afin de maintenir des effectifs suffisants mais pas trop importants!), elle fait un update général toute les heures...


Pour les news c'est tapé en html depuis l'admin et écrit en dur dans un fichier directement! Je trouve ça moins lourd qu'une bdd.


RE: Cache - My Hotel - 09-04-2010

Pour les caches du style de celui de ta "carte", je te conseille plutôt, au lieu de recharger le cache arbitrairement toutes les heures, de mettre un système de ce genre.
Dans ton admin, tu fais toutes tes modifs de carte, une fois fini, tu "commit" : tu met à jour tout d'un coup, et LA tu fais expirer le cache.
A moins de changer ta carte toutes les heures, tu vas y gagner beaucoup.

Bye


RE: Cache - atra27 - 15-04-2010

Hum mouais j'ai déjà fait un bouton pour vider le dossier cache et resynchroniser 2-3 trucs avec la base de donnée...

Depuis j'ai un peu avancé, j'ai fait un systéme de tribunal ou un joueur accusé de vol etc peut se faire juger, etc...
Les "régles de vie" seront définies par les joueurs eux mémes de façon RP donc sa permet de donner une justice RP (biensur, il y a possibilité d'accuser un inocent, qu'un coupable se cache car son pseudo n'aparait pas totalement en cas de combat etc, la fuite aussi est une solution Smile )
Bref, les dépositions sont mises en cache et régénérées une fois que quelqu'un poste un autre message :p

ça permet d'alléger un tel systeme (requete pour récuperer le pseudo du juge, du coupable, de l'accusateur et des différents témoins a partir de leurs id respectifs sa fait lourd a force :p)