Как можно кэшировать только часть html кода на странице?
Добрый день, помогите решить проблему, уже не знаю как быть
Есть ряд страниц, на которых выполняется довольно много действий, как в цикле, так и запросами к базе, генерация страницы бывает доходит до 7 секунд. Включил Redis на хостинге и установил плагин W3 Total Cache, включил создание кеша страницы для всех кроме авторизированных, проблема исчезла, т.к обычных пользователей не должно было быть по ТЗ, далее нужно было подключить комментарии и здесь начались проблемы, для корректной работы нужно было выключить кеш для авторизированных пользователей и тогда все работает, кеш сбрасывается сам при добавлении комментария, но тогда страница для таких пользователей грузится до 7 секунд
Если включить кэш и для авторизированных не админов, тогда все вроде нормально, кроме того, что если авторизированный пользователь первый зашел и сгенерировал страницу, то гость без авторизации видит блок того кто сгенерировал кэш
Единственное что приходит на ум, это как-то кэшировать только 1 блок на странице, которой генерируется до 7 секунд, где-то читал что так можно, но найти не смог, прошу помощи
На каждой странице у меня блоки которые долго генерируются с разным контентом, а генерация происходит через 2 цикла с разными условиями, я не пойму как на каждый поставить ваш скрипт, т.к я ставлю на первый, все работает, но 2й не срабатывает, потому что return $redis->get($key);
Сделал так
if ( $bild_20 ) {
echo '<div class="block20 '.$_name.'">блок 1</div>';
$redis = new Redis();
// подключение к серверу
$redis->connect( 'localhost' );
foreach( $bild_20 as $_bild_20) { $key = include '/путь/к/файлу/20n.php'; }
if ($redis->exists($key)) {
return $redis->get($key);
} else {
// вычисляете свой кусок, затем
$redis->set($key, $data);
$redis->expire($key, 3600); // expires in 1 hour
}
echo '</div>';
}
if ($bild_60n ) {
echo '<div class="name_60 '.$_name.'">2 блок</div>';
foreach( $bild_60n as $_bild_60n) { include '/путь/к/файлу/60n.php'; }
echo '</div>';
}
после include файла, в нем и происходит долгая генерация о которой я писал выше
Потому что эти куски это весь контент на странице, кроме меню и комментариев, если я правильно вас понял страница будет полу пустой до готовности кусков