2010-04-18 6 views
4

J'utilise Symfony 1.3.2 et j'ai une page qui utilise un partiel d'un autre module.Question de mise en cache de Symfony (mise en cache partielle)

J'ai deux modules: 'foo' et 'foobar'. Dans le module 'foo', j'ai une action 'index', qui utilise un partiel du module 'foobar'.

donc foo/indexSuccess.php ressemble à quelque chose comme ceci:

<?php 
<div id = 'container'> 
    <div id='part1'>Some data here</div> 
    <div id='part2'><?php include_partial('foobar/foobar_partial', $partial_params); ?></div> 
</div> 
?> 

Je veux mettre en cache 'part2' de ma foo/page indexSuccess.php, car il est très cher (lent). Je veux que le cache ait une durée de vie d'environ 10 minutes.

Dans apps/frontend/modules/foo/config/cache.yml

Je dois savoir comment mettre en cache 'part2' de la page (par exemple la partie partielle [très cher] de la page. Quelqu'un peut-il Dites-moi quelles sont les entrées requises dans le fichier cache.yml?

Répondre

5

Si vous souhaitez mettre en cache le partiel 'part2' du module 'foobar', vous devez ajouter ces lignes au fichier apps/frontend/modules/foobar/config/cache.yml

_part2: 
    enabled: on 
    lifetime: 600 # 10 minutes 

Lorsque vous appelez le partial de votre action d'index dans foo, une version en cache (si disponible) sera affiché:

<?php include_partial('foobar/part2') ?> 

Si vous souhaitez mettre en cache une version différente de la partie pour chaque modèle qu'il appelle, vous devez éditer le fichier cache.yml comme celui-ci:

_part2: 
    enabled: on 
    lifetime: 600 # 10 minutes 
    contextual: true