2010-07-22 5 views
1

J'ai ce qui suit dans mon contrôleur:gâteau PHP aide Cache, cacheAction

var $cacheAction = array(
      'view/' => 432000, 
      'pricelist/'=>'100000', 
      'latest/' => '100000'); 

C'est de mettre en cache les vues pendant 5 jours. J'ai également activé le cache dans core.php et inclus l'assistant de cache dans mon contrôleur.

Les fichiers de cache sont créés correctement dans tmp/cache/views/mais ils ne semblent pas durer 5 jours. Si je fais une liste de fichiers, tous les fichiers ont été créés au cours des 3-4 dernières minutes.

Qu'est-ce que je fais mal? Ai-je besoin d'une autre syntaxe pour l'action de cache?

grâce

Répondre

3

Vos actions à l'aide de modèles qui changent oire? De l'Cookbook

Il est important de se rappeler que le gâteau effacera une vue en cache si un modèle utilisé dans la vue en cache est modifiée. Par exemple, si une vue mise en cache utilise des données du modèle Post et qu'une requête INSERT, UPDATE ou DELETE a été envoyée à une publication, le cache de cette vue est effacé et du nouveau contenu est généré lors de la prochaine requête.

+0

Le modèle de cette page n'est pas mis à jour. MAIS! La page affiche les images qu'un utilisateur connecté peut ajouter à son panier. BasketImages qui est un autre modèle est mis à jour. Outre cette vue contient un div qui lit les variables SESSION et indique combien d'images l'utilisateur a dans son panier. Cela peut-il être la raison? – gong

+0

J'ai donc testé que lorsque vous ajoutez une image à votre panier, le cache est effacé. Y at-il un moyen d'empêcher cela? – gong

+0

Vous pourriez être en mesure de faire quelque chose où vous utilisez ajax sur la partie qui est dynamique, de sorte que le panier provient d'une vue différente de celle que vous essayez de cache. –

0

Mes modèles sont les suivants:

événements hasMany Images

Panier belongsTo événements hasMany BasketImages

BasketImages belongsTo images bel OngsTo panier

J'ai donc mis en cache la page events/view/id. Dans ce point de vue je:

<?php if (($c=count($basketImages))>0) echo $c; ?> 

puis il y a quelques photos et un bouton qui fait un ajax appel comme:/paniers/ajouter/ImageID

Dans le panier/ajouter, si l'utilisateur n » Vous avez un panier, il crée un, et il crée également un enregistrement BasketImage avec l'imageID en cours.

Alors ma question est faire tomber ma page dans la catégorie où:

Il est important de se rappeler que le gâteau effacera une vue en cache si un modèle utilisé dans la vue en cache est modifiée. (livre de recettes)

Est-ce que l'ajout d'un panier et d'un panierImage fait expirer les événements/le cache du cache? Puis-je utiliser:

<cake:nocache> <?php if (($c=count($basketImages))>0) echo $c;?><cake:nocache> 
+0

Cela aurait dû être ajouté à votre question au lieu d'être posté comme réponse. –