|
|
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Вопрос пока теоретический (и даже не факт, что он обретет материальность). Но для информации хотелось бы знать. Предположим планируется сделать самодельный форум. Как и положено в форуме, будут подфорумы, топики, посты, с возможностью цитирования, редактирования и т.д. Также будет предусмотрен механизм переноса в архив старых тем. И возможно будет опция разделения очень больших топиков. Все это потребует корректировки ссылок на посты, т.к. после переноса или разделения тем ссылки на топик или на посты топика изменятся. Как обычно это реализуется? При постинге анализируется текст и все ссылки копируются в отдельную таблицу, в которой фиксируется url и идентификатор поста? Это позволит легко найти все ссылки, принадлежащие или ссылающиеся определенным постам и топикам. Или при разделении или переносы темы анализируются тексты всех постов и редактируются ссылки в тексте? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2013, 10:37 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
постарайтесь не хранить в урлах информацию о топике - только его код: Код: sql 1. поэтому относительная ссылка на топик будет всегда одна: Код: sql 1. всякие прочие редиректы и т.д., в зависимости от состояния топика, можно сделать на стороне сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 15:50 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Какая разница, в абсолютном виде хранится URL или в относительном? При разделении темы или переносе ее в архив изменится весь URL, а не его база. Кроме того, форум может переехать на другую платформу и тогда структура URL будет другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 16:31 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Alibek B., Идентификаторы постов от переноса в архив не поменяются. Поэтому и ссылки на конкрентые посты останутся верными. А с разделением темы... Если была Тема1, и на нее были ссылки. А затем от нее отделилась Тема1-1. То куда должны указать прежние ссылки? Мне кажется, на прежнюю Тему1. Все идет к тому, что никакие ссылки менять не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2013, 17:32 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Cane Cat FisherИдентификаторы постов от переноса в архив не поменяются. Поэтому и ссылки на конкрентые посты останутся верными. Могут поменяться не идентификаторы, а URL. Было "forum/actualthread.aspx?tid=1005712", стало "ubb/view.php?t=1005712". Cane Cat FisherА с разделением темы... Если была Тема1, и на нее были ссылки. А затем от нее отделилась Тема1-1. То куда должны указать прежние ссылки? Мне кажется, на прежнюю Тему1. Смотря какие ссылки. Ссылки могут ссылаться на конкретные посты или страницы, в этом случае они должны измениться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 08:36 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Alibek B.Могут поменяться не идентификаторы, а URL Нет, не могут :) Прежде всего стоит понять, что есть две разных вещи - "текст сообщения" и "html-представление текста сообщения". Скажем, я пишу в нашем форуме [ m s g = 1 2 3 4 5 ], а движок в ответ на это показывает мне и другим ссылку наподобие h t t p : // s q l . ru / . . . & m i d = 1 2 3 4 5 Так вот, любое мало-мальски вменяемое решение хранит текст сообщения, а представление либо генерирует на лету, либо кеширует. Соответственно, никакой url в тексте сообщения просто-напросто не хранится и проблема поменять его не возникает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 13:20 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
softwarerТак вот, любое мало-мальски вменяемое решение хранит текст сообщения, а представление либо генерирует на лету, либо кеширует. Такой подход понятен. Но я думал, что его не используют, т.к. он увеличивает нагрузку — для каждого посетителя нужно сгенерировать HTML-текст при каждом обращении (если не кешировать). Я считал, что либо тексты сообщений хранятся в своем исходном виде (в виде BBCode или HTML, но именно в том виде, в котором их ввел пользователь), либо парсятся до всех токенов. Однако форумы мне делать не доводилось, поэтому что на практике более оптимально, я не знаю. И второй вопрос, что если ID сообщения или темы все же меняется? Это может произойти при переносе темы в архив или при разделении сообщения на два. Чем плохо мое первое предложение (при публикации сообщения извлекаются все ссылки и сохраняются в отдельную таблицу с привязкой к сообщению, эдакий самодельный аналог полнотекстового индекса)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 17:02 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Alibek B.что если ID сообщения или темы все же меняется? Это может произойти при переносе темы в архив или при разделении сообщения на два. 1. А не нужно менять ID'ы даже при переносе в архив. 2. При разделении сообщения на два, у одного из них надо сохранить прежний ID. Тогда на него будут указывать существующие ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 17:17 |
|
||
|
БД для форума, хранение ссылок
|
|||
|---|---|---|---|
|
#18+
Alibek B.т.к. он увеличивает нагрузку — для каждого посетителя нужно сгенерировать HTML-текст при каждом обращении (если не кешировать) Никто не мешает выбрать решение сообразно нагрузке и прочим архитектурным возможностям и особенностям. Alibek B.И второй вопрос, что если ID сообщения или темы все же меняется? Не вижу причин. Нет абсолютно никакой объективной необходимости менять ID того же объекта. Если же объект расщепляется... с сообщением неактуально, это вообще вряд ли востребованная функция, а с темами всё просто. Можно или "отделить ветку в новую тему" с новым ID, либо - если уж извращаться - сделать у каждой темы новый ID, а для старого записать в базу "разделился на такие-то". Тогда по ссылке на старый ID можно будет показывать менюшку созданных тем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2013, 19:52 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38156914&tid=1541350]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 406ms |

| 0 / 0 |
