Lors de l'utilisation de la mise en cache de fragments ou de la mise en cache de pages, nous rencontrons souvent une situation où la sortie de la partie entière est statique, à l'exception de quelques endroits. Par exemple, une page d'aide peut afficher des informations d'aide statiques, mais le nom d'utilisateur affiché est celui de l'utilisateur actuel.
Pour résoudre ce problème, nous pourrions faire correspondre le contenu mis en cache en fonction du nom d'utilisateur, mais cela représenterait un énorme gaspillage de notre précieux espace car la plupart du contenu mis en cache est le même, à l'exception du nom d'utilisateur. Nous pouvons également couper la page Web en plusieurs fragments et les mettre en cache séparément, mais cette situation rendra la page et le code très compliqués. Une meilleure approche consiste à utiliser la fonctionnalité de contenu dynamique fournie par [CController]. Le contenu dynamique signifie que la sortie du fragment ne sera pas mise en cache même si elle est incluse dans le cache des fragments. Même si le contenu inclus est extrait du cache, pour que le contenu dynamique soit dynamique à tout moment, il doit être régénéré à chaque fois. Pour cette raison, nous exigeons que le contenu dynamique soit généré via une méthode ou une fonction.
Appelez CController::renderDynamic() pour insérer du contenu dynamique là où vous le souhaitez.
...别的HTML内容... <?php if($this->beginCache($id)) { ?> ...被缓存的片段内容... <?php $this->renderDynamic($callback); ?> ...被缓存的片段内容... <?php $this->endCache(); } ?> ...别的HTML内容...
Dans ce qui précède,
fait référence à un rappel PHP valide. Il peut s'agir d'un nom de chaîne pointant vers une méthode de la classe de contrôleur actuelle ou une fonction globale. Il peut également s'agir d'un nom de tableau pointant vers une méthode d'une classe. Tous les autres paramètres seront transmis à la méthode renderDynamic(). Le rappel renverra du contenu dynamique au lieu de simplement l'afficher.$callback
Ce qui précède est le contenu de la série 32 du guide officiel du Yii Framework - Mise en cache : contenu dynamique. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php. .cn)!