Частичное кеширование страницы в Smarty

OlegR

Guest
Частичное кеширование страницы в Smarty

Возникла необходимость кеширования отдельных частей страницы, таких как новости, хронология событий и т.п.
Smarty позволяет кешировать страницу целиком. Как поступить в этой ситуации непонятно.
Включить в начале файла кеш, значит прокешировать всю страницу, что собственно и недопустимо.
Пример шаблона:
PHP:
<html>
<body>
Текст1
{include file="news.tpl"}
Текст2
{include file="chrono.tpl"}
Текст3
</body>
</html>
 

OlegR

Guest
дело в том что мне нужно наоборот. каждый раз обновлять страницу, а кешировать ее контент, и никак не наоборот.
В примере предлагается ситуация обратная моей. там некешируется часть страницы которая вызывается через плагин.
Это мне не подходит
 

Necromant

Новичок
Автор оригинала: OlegR
каждый раз обновлять страницу, а кешировать ее контент, и никак не наоборот.
ну , и в чем проделема , берем масив , который отдается в смарти
serialize($_GET)|serialize($smarty_masiv)

предварительно бъем шаблон на 2 частти внешняя и внутреняя, внутренюю в кеш , http://smarty.php.net/manual/ru/api.fetch.php
и передаем , восновную как , текст :) , все
 

Balancer

Guest
Автор оригинала: OlegR
дело в том что мне нужно наоборот. каждый раз обновлять страницу, а кешировать ее контент, и никак не наоборот.
Кешируй всю страницу, а обновляй только её части. Вот как у меня сделано:

Код:
...
if(!$smarty->is_cached("hts:{$template}body/", $page))
{
...
// Тут генерируем новую страницу
...
}
$smarty->load_filter('output', 'php_include');
$out = $smarty->fetch("hts:{$template}body/", $page);
$out = preg_replace("!<\?php(.+?)\?>!es", "do_php(stripslashes('$1'))", $out);
echo $out;
Если смарти кеширует страницу, то это не значит, что она нам недоступна :) Это значит только, что он сам с ней ничего делать не будет. Делаем fetch, обрабатываем код, подменяя то, что нам нужно, и всё.
 

Demiurg

Guest
в смарти есть такая вещь, как insert, которые не кешируется, спецаильно сделано для таких вещей.
 

OlegR

Guest
Автор оригинала: Demiurg
в смарти есть такая вещь, как insert, которые не кешируется, спецаильно сделано для таких вещей.
Ребята, ну вы вокруг одного и того же ходите, и предлагаете разные методы одного и того же. Страница динамически должна меняться. Должны кешироваться отдельные блоки. Из ранее приведенного примера шаблона:

<html>
<body>
Текст1
{include file="news.tpl"}
Текст2
{include file="chrono.tpl"}
Текст3
</body>
</html>


Текст1,2,3 - меняются постоянно
а шаблоны из файлов news.tpl и chrono.tpl кешируются 0,5 дня и 1 день соответственно.

Про варианты кеширования страницы целиком, и не кеширования отдельных частей я знаю. меня интересует обратная ситуация. Кешированных блоков может быть нескольно, а инфы которая меняется постоянно дофига.
 

Demiurg

Guest
OlegR
зачем кешировать основной шаблон ?
 

OlegR

Guest
Автор оригинала: Demiurg
OlegR
зачем кешировать основной шаблон ?
Вот и дело то в том что кешировать его не надо. А надо кешировать только некоторые блоки.
А ну вас, я уже сам эту проблему решил.
Учите албанский.
 
Сверху