Переделка модели виджетов
Рубрики: Идеи ; Метки: twidgets ; 10.07.2010Ранее я не планировал существенно переделывать составные части движка. Сегодня уже возникла настоятельная потребность переделки модели виджетов. Существующая модель хорошо работает в одном случае - когда все виджеты на всех страницах одинаковые, то бишь сквозные. Сложности возникают на индивидуальных страницах. В существующей модели делается кеширование контента всего сайтбара, в результате чего становится сложным изменить виджеты в сайтбаре.
Планирую изменить следующим образом: контент сайтбаров вообще не кэшировать, сам же контент каждый раз собирать. В кеше предплогаю хранить массив контента виджетов. Предполагаю добавить новый интерфейс iwidget - для классов генерирующих (отдающих) виджеты. В интерфейсе необходимо формализовать методы получения контента виджета, в том числе нововведения аякса.
Скорее всего необходимо будет сделать в виде следующей штуковины - общий, так сказать, репозитарий (хранилище) всех виджетов. А вот каждая страница будет генерировать свой список id виджетов для сайтбаров, после чего будет собираться контент сайтбара. Соответственно нужно хранилище контента, ну то есть более интеллектуальный кеш.
С кешем тоже не все так просто: если на одном сайте используются несколько тем, то для каждой темы нужен персональный, изолированный кеш от других тем. Очищение кеша должно очищать и этот кеш. Необходимо соблюдать синхронизацию по устареванию контента виджета. Например для комментариев - после нового коммента необходимо объявить недостоверным виджет свежих комментов во всех местах. Думаю эту задачу можно решить путем добавления особого значения для общего хранилища виджетов (вариант а ля номер ревизии, или время последней модификации) и сравнивать это значение с кешом. Для целой страницы используется время файловой системы, то для виджетов придется реализовывать ее некое подобие: не файловую систему, а время последней модификации.
Далее можно поставить вопрос о конкурентных обращениях к хранилищу виджетов. Файловая реализация без проблем выдержит много читателей и одного писателя, но вот как быть если вдруг появятся несколько одновременных писателей? БД без проблем решает эту задачу. Использование бд для виджетов - это дополнительная нагрузка и потеря производительности. Либо использовать файловый вариант, но со специальным запиранием на изменение? Вообще же говоря виджеты сами по себе меняются не часто - для хранилища число и параметры виджетов будут практически всегда стабильными. Конкуренция может появится уже при работе с конечным контентом, его кэшированием, объявление контента устаревшим.
Вот такие не простые вопросы сейчас стоят при переработке модели виджетов.
Подписаться на RSS комментариев к этой записи
Ранее Два новых плагина: бекап на dropbox и очистка кэша | Позже Новая модель виджетов и сайтбаров
10.07.2010 в 16:58
поддерживаю развитие данного изменения, это даст намного большую гибкость в отображении и сборке индивидуальных страниц и чего-то особенного!!! оч нужная вещь. хорошо бы еще блоки независимые можно было бы вставлять на отдельные страницы и управлять их содержимым и отображением на индивидуальных страницах, каждая по своему.
10.07.2010 в 19:47
Уже сейчас есть индивидуальные виджеты, но думаю, что с переработанной моделью это будет проще
16.07.2010 в 15:58
Впервые слышу о таком движке. Вордпресс терпеть не могу. Если Блоголет не напоминает в админке вордпресс, то буду использовать.
16.07.2010 в 16:19
Да, блоголёт принципиально иной чем wordpress