Как хранить комментарии к уценке
Я хочу использовать Markdown для системы комментариев моего веб-сайта, но я столкнулся со следующей проблемой: что я должен хранить в базе данных - исходный комментарий в Markdown, проанализированный комментарий в HTML или и то, и другое?
Мне нужна версия HTML для просмотра и версия уценки, если пользователю нужно отредактировать свой комментарий. Если я сохраню версию Markdown, мне придется анализировать комментарии во время выполнения. Если я сохраняю HTML-версию, мне нужно преобразовать комментарий обратно в уценку, когда пользователю необходимо отредактировать его (я нашел Уценку для этого, но это не безупречно). Если я сохраняю обе версии, я удваиваю используемое пространство.
Какой был бы лучший вариант? Кроме того, как с этим справляется переполнение стека?
3 answers
Храните оба. Это противоречит правилам нормализации базы данных, но я думаю, что в данном случае это того стоит для оптимизации скорости - разбор больших объемов текста - очень медленная операция.
Вам нужно сохранить его только дважды, но вам может потребоваться обслуживать его тысячи раз, так что это компромисс между пространством и временем.
Сохраните исходную уценку и проанализируйте ее во время выполнения. Существует несколько проблем с хранением преобразованной версии в базе данных.
- Если пользователь хочет отредактировать свой комментарий, вы должны преобразовать его в обратном порядке в исходную уценку
- Место в базе данных (всегда следуйте правилу, что если вам не нужно его хранить, не делайте этого)
- Изменения, внесенные в синтаксический анализатор markdown, должны выполняться для каждого комментария в базе данных, а не просто отображаться в время выполнения.
Просто отобразите уценку в HTML во время выполнения.
Если у вашего сайта возникнут проблемы с производительностью, уценка будет одной из последних вещей, которые вы рассмотрите для настройки. И даже тогда я сомневаюсь, что это будет иметь смысл.
Просто взгляните на средство визуализации JavaScript в реальном времени, которое использует SO. Это быстро.
Редактировать: Извините, я должен был выразиться яснее. Я имел в виду просто визуализацию на PHP. Вы избавите себя от большой головной боли - и у вас, вероятно, есть более важные дела, чтобы беспокойся об этом.