08-04-2010, 06:23 PM
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
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