Да и при этом неопределенно долгое время. Например. Написали статью. Через минуту получили комментарий "поправь пожалуйста ошибку в заголовке". Через 1 минуту поправили. Все, комментариев может больше вообще никогда не быть, а в ту же RSS будет долго и упорно идти старый заголовок.
для com_content, как одного из самых распространенных источников данных есть решение, которое при изменении объекта внесет правки в эту таблицу, причем без каких либо проблем (простейший плагин для события onAfterContentSave).
Согласен, что JComments может и должен использоваться для комментариев n компонентов и будет не 1, а n запросов. Ну 5, 10, даже 20, но не 1500, как в том же К2... Это не страшно.
Ну давай не будем ровняться на расширения, которые не считают количество запросов? Это вообще не наш метод.
Давай считать реальную ситуацию, есть сайт на котором комментарии используются в:
1. Материалах
2. Галерее изображений
3. Файловом архиве
4. Каталоге
5. Профилях пользователей
Итого, имеем 5 разных компонентов (но не источников, так как галерея (PhocaGallery) и файловый архив (PhocaDownloads) позволяет комментировать категории и сами файлы). Таким образом у нас 7 разных источников объектов для комментариев. И это простой еще случай, в Music Collections комментировать можно 6 сущностей.
Итак, чтобы сформировать RSS ленту, для такого набора источников нам нужно:
1. Выполнить на получение списка комментариев (1 запрос)
2. Сформировать 7 списков идентификаторов для каждого из 7 источников
3. Получить данные о заголовке и ссылке на объект (14 запросов - по одному на каждый источник и еще одному на Itemid для источника).
4. Пройтись по массиву, полученному на шаге 1 и заполнить его данными полученными на шаге 2.
Итого, для построения RSS ленты требуется 15 запросов. При этом, 7 запросов, будут содержать в себе конструкцию id in (1,2,3), которая при возрастании количества элементов, не так уж и быстро будет работать. Ну представь, что у нас реально первые 99 комментариев оставлены в материалах, и 1 в галерее. Итого, в запросе на выборку данных по материалам, мы получим сет из 99 значений. Красотень... Я не думаю, что план запроса кого-то порадует.
А если у нас есть магическая табличка... То мы выполняем всего 1 запрос - прямая связка по индексному полю, и дальше при отображении для ссылок вызываем JRoute, чтобы построить SEF-ccылку. И все...
Теперь, вернемся к вопросу актуальности данных. Вопрос, конечно серьезный, но ведь есть вполне красивое решение. Причем, на уровне все тех же плагинов. Мы добавляем в плагины еще один метод, назовем его для условности - processAction, задачей которого будет, взять из параметров запроса идентификатор объекта и обновить этот объект в таблице объектов.
Далее, в системном плагине мы смотрим какой компонент вызывается, если у нас есть для него плагин - берем плагин, и дергаем этот метод. Метод сам смотрит - что за действие выполняется, и если это сохранение - обновляем объект, если это удаление - удаляем. Да, есть в данном подходе некоторая избыточность - метод будет вызываться при всех действиях. В этом смысле, лучше вызывать это только для действий в административной панели.
Этот функционал, можно вынести элементарно в настройки плагина - не использовать, использовать для всего сайта, использовать только в административной панели.
А для еще более экономного расходования ресурсов - мы можем создать отдельные события, на изменение/удаление объекта, которые бы вызывались компонентами, а мы по этим событиям - обновляли бы таблицу, или же удаляли комментарии. Все равно так или иначе подобный механизм (оповещения комментариев об удалении объекта комментариев) нужен.
В конечном счете, можно вообще рассматривать данную таблицу, как некий слой кэширования, но не файловый (в Joomla он вообще не управляемый), а с использованием БД. Точно так же, как некая краткая информация об объектах комментирования, можно еще там же хранить счетчики комментариев (опубликованных, неопубликованных), и т.д. Если же этот слой выключен - все будет работать так же, как будто его нет - если выборку данных делать через left join, а на пост-обработке в случае пустых значений в object_title вызывать плагины - то то, на то и выйдет. Зато если включить - в большинстве случаев будет прирост производительности.