Yii пример кэширования фрагмента страницы
Primary tabs
приведу пример кэширования представления одного из действий контроллера (подобный код следует писать в представлении) - сразу скажу, что для того, чтобы выполнить кэширование всей страницы - удобно использовать кэширование на уровне контроллера - например кэширование действия.
Но вернёмся к кэшированию фрагмента - в данном случае - представления дествия (данные из БД были получены в контроллере и переданы в виде массива):
<?php //phpinfo(); // если значения нет в кэше - то добавим if ($this->beginCache('100123')) {?> <h2>Список сообщений </h2> <?php// phpinfo(); echo CHtml::link('На главную', array('site/index')); /*далее в виде таблицы выводим данные , которые в контроллере мы извленкли из БД*/?> < table class="table table-striped table-bordered"> <tr> <td>Имя пользователя</td> <td>Номер сообщения</td> <td>Текст сообщения</td> </tr> <?php foreach ($msgs as $msg): $i = 0; ?> <tr> <td ><?php echo $msg->user->username; ?> </td > <td ><?php echo $msg->id; ?> </td > <td ><strong><hr><br>Заголовок:</strong> <?php echo $msg->title; ?> <strong><hr><br>Текст:</strong> <?php echo $msg->text; ?> <strong><hr><br>Подпись:</strong> <?php echo $msg->ps; ?> <strong><hr><br>"Тип" заказчика:</strong> <?php if ($msg->type) echo "юридическое лицо"; else echo "физическое лицо" ?> < /td > < td><?php //CVarDumper::dump($msg->image2); if ($msg->image) echo CHtml::image(Yii::app()->request->hostInfo. "/" . 'images/' . $msg->image->name); else // echo "[нет изображения]"; CVarDumper::dump($msg->image); ?>< /td > < td> <?php if ($editlinks[$i]) echo CHtml::link('[редактировать]', array('site/editmessage', 'id' => $msg->id)); ?></td > </tr> <?php endforeach; ?> < /table > <?php /* всё что endCache() выше закэшировано (было уже или же "теперь") а что после вызова - не попадает в кэш - (конечно при уловии что данный фрагмент не охвачен кэшированием более высокого уровня - например кэшированием страницы на уровне контролеера) */ $this->endCache(); // уведомляем что данные не из кэша, но уже записаны в него echo ('NOT from cache !'); } else echo ('from cache !'); // таблица уже была в кэше ?>
- Log in to post comments
- 3679 reads