Bonjour,

J'ai un soucis avec ma mise en cache sur Cakephp3

J'utilise la méthode cache juste après la requête, je donne un nom au cache, jusqu'ici tout vas bien.

Problème : je n'arrive pas lors d'un ajout/delete/update à ne pas régénérer le cache en entier avec la méthode cache après la requête.
Pour l'instant je fais un Cache::clear();, cela régénère l'ensemble des caches du site ( niveau perf c'est mauvais )


<?php
// la méthode que j'utilise pour la mise en cache
$posts = $this->Posts->find('all')->...->cache('posts_results');

?>

Merci de votre aide :)

11 réponses


Romano83
Réponse acceptée

Salut !
et en faisant un Cache::delete('posts_results') lors d'un ajout/update/suppression, ça ne fonctionne pas ?

Lartak
Réponse acceptée

Bonjour.

je ne pense pas que cela permette de ne supprimer qu'un élément du cache ( lors d'une suppression cela éviterai de régénérer le cache entièrement )

Non, ça supprime entièrement le cache correspondant à la clé définie dans la méthode delete et pour information, la méthode delete ne prends qu'un seul argument qui est la clé du cache, tu ne peux donc pas supprimer qu'une partie du cache correspondant à la clé.

Désolé j'ai du mal m'exprimer. Je cherche simplement à ajouter/retirer un élément dun cache précis afin de ne pas régénérer entièrement le site.

Salut, merci de ta réponse j'essaierai sa chez moi mais je ne pense pas que cela permette de ne supprimer qu'un élément du cache ( lors d'une suppression cela éviterai de régénérer le cache entièrement )

// il me faudrait quelque chose de ce type
// $id serait par exemple l'id du post spécifique à supprimer 

Cache::delete('posts_results', $id);

D'accord, merci pour l'info. Donc obliger de le régénérer entièrement ?

Oui, tu n'as pas le choix.

Ok. ça m'embête je vais continuer à chercher car je pense sa totalement normal de ne pas régénérer un cache entièrement à chaque ajout/modif ( imaginons 300 posts, niveau perf moyen moyen ). Merci de votre aide.

imaginons 300 posts, niveau perf moyen moyen

En même temps, quel serait l'intérêt de récupérer autant d'enregistrements ?
Tu comptes afficher environ 300 enregistrements voir plus sur une page ?

Non bien sûr. Je trouve juste ça plus pratique de ne modifier seulement ce qui est nécessaire.
Merci de votre aide.

Ce que je fais généralement, c'est de mettre en cache uniquement un post à la fois. La clé du cache est basée sur l'ID du post. Comme ça, si je modifie le post, j'invalide uniquement le cache de celui-ci !

D'accord, mais du coup comment ça se passe pour les lister ? Car ils sont dans des caches séparer