La mise en cache des pages fait référence à la mise en cache du contenu de la page entière. La mise en cache des pages peut avoir lieu à différents endroits. Par exemple, en sélectionnant les en-têtes de page appropriés, le navigateur du client peut mettre en cache une page Web pendant une durée limitée. L'application Web elle-même peut également stocker le contenu d'une page Web dans le cache. Dans cette section, nous nous concentrons sur cette dernière approche.
La mise en cache des pages peut être considérée comme un cas particulier de mise en cache des fragments. Étant donné que le contenu Web est souvent généré en appliquant une mise en page, si nous appelons simplement beginCache() et endCache() dans la mise en page, cela ne fonctionnera pas correctement. En effet, la mise en page est chargée dans la méthode CController::render() après la génération du contenu de la page.
Si nous voulons mettre en cache la page entière, nous devons ignorer l'exécution des actions qui génèrent le contenu Web. Nous pouvons utiliser COutputCache comme filtre d'action pour accomplir cette tâche. Le code suivant montre comment configurer un filtre de cache :
public function filters() { return array( array( 'COutputCache', 'duration'=>100, 'varyByParam'=>array('id'), ), ); }
La configuration de filtre ci-dessus rendra le filtre applicable à Toutes les actions dans le contrôleur. Nous pouvons le limiter à une ou quelques actions en utilisant des opérateurs de plugin. Plus de détails peuvent être trouvés dans Filtres.
Astuce : Nous pouvons utiliser COutputCache comme filtre car il hérite de CFilterWidget, ce qui signifie que c'est un outil (widget) et un filtre. En fait, les widgets fonctionnent de manière très similaire aux filtres : les widgets outils (filtres) sont exécutés avant l'exécution du contenu de l'action et se terminent après l'exécution.
Ce qui précède est la série 31 du guide officiel du framework Yii - Cache : Page Cache Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !