Нужно сделать автоматическую разбивку тем.
Есть проблема с длинными темами. Пока еще не очень большая, но дожидаться когда жареный петух на могилке спляшет - не хочется. Длинные темы (в которых несколько ТЫСЯЧ сообщений), создают неправильную нагрузку на сервер.
Хочется организовать автоматическую нарезалку таких тем на части. Механизм следующий:
- В конце темы создается сообщение со ссылкой “Продолжение. Том XX” и тема закравается.
- Создается новая тема, с названием “Старый топик. Том XX-1”
- Там же проставляется ссылка на предыдущую тему.
То есть, связность сохраняется, плюс автоматическая нумерация. Размер тома около тысячи сообщений (еще не прикидывал, как лучше и как у других сделано).
Кто-нибудь сталкивался на практике с такими механизмами? У них есть недостатки?
У них есть недостатки?
- Есть ли там механизм при просмотре и выделении под ответ с цитированием куска сообщения из первого тома размещать ответ в последнем томе… х.з. …
- Часто встречал практику разбивки тем не по количеству постов, а по годам, что с точки зрения логики более юзабельно - можно сделать отдельные разделы “Архив-2008”, “Архив-2007” и т.д. (примерно как сейчас наличие “пыльного чулана”) и старые куски тем переносить туда…
Хм… с цитированием в следующий том наверное будет облом. Тема-то закрыта. Хотя наверное можно издокториться, сделать чтобы работало. Скажем, недельку продавливать сообщения в следующий топик, а потом старый окончательно закрывать. В принципе это решаемо.
Идея разбивки по годам мне не нравится. Такая разбивка на размер не повязана. Я плохо понимаю, как такое автоматизировать. Понятно, что можно вручную темы кроить, но это не вариант.
Такая разбивка на размер не повязана. Я плохо понимаю, как такое автоматизировать.
На размер не повязана, но привязана к году, что проще для пользователей найти начало…
С точки зрения автоматизации - не вижу принципиальной разницы что бить сообщения по номерам топиков, что по дате создания последнего топика - и то и другое в базе есть…
А вообще много таких тем? Насколько это критично?
Темы в основном во встречах-датах наверное. Они “бесконечные”. Сегодня попробую сделать выборку.
Критичность - когда-нибудь наступит полная жопа. Не хочу героически преодолевать сложности. Идей для подвигов хватает.
На форумах перелиcтывание страниц делается SQL-запросом с параметром LIMIT X,Y. А у него есть неприятная особенность, что он сначала выбирает ВСЕ записи темы, и потом отдает нужную часть. Соответственно, для больших тем каждый раз выбирается эдак по 5 тысяч строк (либо берется из кэша). Зависит от популярности темы. Как только больших и популярных тем станет много, или результаты запросов перестанут помещаться в кэш, наступит копец.
Если вовремя нарезать на части - таких проблем не будет.
но грузить каждый раз 70-т страниц
Черт с ним…, пусть хоть по 10 грузятся, хоть по 5, только чтобы в загруженном присутствовал элемент навигации на другие страницы этой темы… IMHO
В “Магазинах” номер три.
Пока готовится список тем, собираю пожелания, как нарезать на части. В общем-то 2 вопроса:
- После скольки сообщений создавать новый том? Я бы хотел конечно “поменьше”. 1000 хватит?
- В каком формате метить продолжения?
- дописывать “(том xx)”
- дописывать “(часть xx)”
- дописывать “. Том xx”
- и т.д.
Что еще нужно?
Дурацкий вопрос , но всё же: А сквозной нумерации постов не может быть в “частях”? Было бы удобно.
Что дописывать наверно не принципиально, если это не повлияет на поиск/сортировку тем. Только что бы “бросалось в глаза” (разделители?), пожалуй и всё.
Сквозной нумерации постов быть не может. Проблема из то же серии, что разбивка на страницу.
Вот список тем, которые обновлялись за последние пол года и имеют более 1000 сообщений:
2710 rcopen.com/forum/f22/topic23025
6157 rcopen.com/forum/f22/topic26603
2786 rcopen.com/forum/f22/topic26779
1757 rcopen.com/forum/f22/topic27678
1675 rcopen.com/forum/f8/topic28745
1364 rcopen.com/forum/f22/topic32332
6110 rcopen.com/forum/f22/topic33015
1097 rcopen.com/forum/f81/topic34789
2971 rcopen.com/forum/f22/topic35630
3459 rcopen.com/forum/f22/topic37839
2113 rcopen.com/forum/f22/topic42458
1659 rcopen.com/forum/f22/topic43736
1377 rcopen.com/forum/f22/topic47681
2284 rcopen.com/forum/f59/topic52119
1896 rcopen.com/forum/f74/topic53001
2855 rcopen.com/forum/f22/topic53812
4698 rcopen.com/forum/f22/topic54784
3066 rcopen.com/forum/f22/topic54835
1076 rcopen.com/forum/f22/topic54980
1069 rcopen.com/forum/f27/topic55091
1180 rcopen.com/forum/f74/topic55652
1426 rcopen.com/forum/f98/topic59962
1423 rcopen.com/forum/f22/topic62858
1137 rcopen.com/forum/f74/topic64580
1370 rcopen.com/forum/f22/topic71210
1911 rcopen.com/forum/f90/topic72390
1654 rcopen.com/forum/f22/topic73547
1884 rcopen.com/forum/f27/topic76804
3765 rcopen.com/forum/f23/topic77123
1039 rcopen.com/forum/f22/topic79006
1357 rcopen.com/forum/f116/topic79668
2883 rcopen.com/forum/f116/topic81575
1009 rcopen.com/forum/f22/topic86157
1335 rcopen.com/forum/f27/topic86777
1014 rcopen.com/forum/f4/topic87597
1052 rcopen.com/forum/f59/topic95249
3367 rcopen.com/forum/f22/topic96618
1965 rcopen.com/forum/f66/topic98966
1011 rcopen.com/forum/f80/topic107010
1066 rcopen.com/forum/f90/topic108958
2096 rcopen.com/forum/f55/topic109767
1185 rcopen.com/forum/f27/topic115493
1440 rcopen.com/forum/f84/topic123299
Сквозной нумерации постов быть не может.
Бог с ней, со сквозной нумерацией постов…
Можно-ли хотя бы вклячить в закрываемый том последним постом “продолжение темы” со ссылкой на начало нового тома и в новом томе первым постом “предыдущие обсуждения” со ссылкой на последний пост закрываемого тома?
Чтобы была хоть какая-либо “сквозная навигация” по теме …
Естественно. Я же об этом в самом первом сообщении написал.
Единственное, чего не обещаю НЕМЕДЛЕННО, это продавливание ответов из старой темы в новый том. Типа, галактеко опасности, есть очень срочные дела. Вроде понятия ленты новостей и приведения NNTP из задрипаного состояния в божеский вид. Но в течение несколько месяцев - вполне реально. Идея мне понравилась.
Можно-ли хотя бы вклячить в закрываемый том последним постом “продолжение темы” со ссылкой на начало нового тома и в новом томе первым постом “предыдущие обсуждения” со ссылкой на последний пост закрываемого тома?
Может быть реализовать что-то вроде списка томов для перехода, аналогично списку страниц внизу обычных тем?
аналогично списку страниц внизу обычных тем?
Можно и внизу - без разницы, как Виталию проще будет…
Только чтобы переход на том ниже был не в его начало, а в конец…
Может быть реализовать что-то вроде списка томов для перехода, аналогично списку страниц внизу обычных тем?
Перед тем как что-то делать, надо решить один важный вопрос: “А нафига оно вообще нужно?”.
IMHO, очень не очевидно, кому, когда и при каких обстоятельствах понадобится именно список томов. И стоит ли городить сложности, если этой фичей будут пользоваться раз в сто лет. По одному тому отматывать ведь никто не запрещает.
форумах перелиcтывание страниц делается SQL-запросом с параметром LIMIT X,Y.
Виталий, а насколько реально отрефакторить БД? Добавив альтернативный композитный ключ посту threadId, PostNumberInThread.
Посты в таких темах в основной массе “не удаляемые” их номера в ветке не меняются. Ограничение Limit X, Y перейдет в Where как between X AND Y и кошмар “взять все и выкинуть ненужное” тихо отступит без переделки интерфейса + “сквозная нумерация” остается и т.д. - Ну то есть юзвери и не узнают, что проблема была .
WBR CrazyElk
P.S. Решать как удобнее что делать естественно Вам.