Формализация кэширования сайтбаров
25.11.2009В предыдущем посте я писал о затруднениях с главной страницей. Кажется я понял в чем причина этих затруднений - это не формализованное Кеширование сайтбаров. Сейчас сделано следующим образом: в шаблоне встречается тег $template->sitebar - его контент отдается методом getsitebar, в котором проверяется существование файла сайтбара в кеше. Далее очевидно - есть файл, то отдать его контент, а иначе сгенерировать контент, сохранить в файл и отдать контент. Вроде как логично и в алгоритме не содержится ошибки.
Но вот появляется спецглавная страница, в которой не нужен кеш сайтбара, а если и нужен, то только кеш для главной а не кеш для всех страниц. Как разрулить? Позволить классам для своей странице генерировать свой собственный сайтбар. Каким образом? Думаю подойдет метод getsitebar интерфейса itemplate2 (2 - типа advanced, но чтобы не писать много слов). Если есть интерфейс - то сгенерировать.
Интерфейс - это хорошо, но он никак не влияет на вопрос с кэшированием. А может быть вообще не стоит хранить готовый сайтбар в кеше? Может быть достаточно хранить массив контента виджетов, из которых на лету собирать сайтбар? Окончательная сборка сайтбара не отнимет ресурсы. Сложно сказать, насколько это будет эффективно. Получается, что будет кэшироваться контент виджетов без сохранения их в файлы (как это делается в старой версии). Но тогда какой смысл в подобном псевдокешировании? Не проще тогда уже весь сайтбар кэшировать?
Может быть стоит перевести вопрос в иную плоскость - кто должен отвечать за кеширование сайтбаров? Например кэшированием страниц целиком занимается turlmap, который сопоставляет урлы к классам - если файл в кеше не устарел, то его отдает, а иначе создается класс и генерируется страница. В существующей модели, за кеширование сайтбаров отвечает ttemplate. В новой версии появился вспомогательный класс tsitebars для управления виджетами в сайтбарах. Буду делать как считаю нужным, а там посмотрю, что удобнее.
Комментарии (9) на запись “Формализация кэширования сайтбаров”
Оставить комментарий
Пароль хранится в классе toptions в в виде хеша, для его смены можно также воспользоваться спецскриптом в
http://litepublisher.googlecode.com/svn/trunk/utils/
(имя файла точно уже не помню, но там есть). На почту приходит точно такой же пароль - может быть ты в конце случайно пробел добавил, для начала скопируй его в блокнот, чтобы точно быть уверенным в совпадении введенного пароля
$Options->SetPassword('мой новый пароль');
А я вот почему спросил. Попробовал с помощью xml-rpc закинуть новости на будушее...и что-то они опубликовались сразу же(
Может быть это недоработка программки которая это сделала, или, все таки, такой вариант не может быть осуществлен?