Как подойти к хранилищу markdown в БД для пользовательского контента?

Я думал о том, что позволяет пользователям редактировать контент сайта с уценкой, так как это просто и легко. Теперь вопрос в том, как сохранить этот ввод - должен ли я преобразовать его в html при сохранении, а затем сохранить необработанный HTML в базе данных или сохранить текст уценки и повторно проанализировать его в HTML по каждому запросу? Следует ли здесь использовать другой подход (писать статические файлы и т. д.)? Мне просто интересно, как подойти к этой проблеме, и как это делают такие сайты, как stackoverflow. спасибо.

1 ответов


Я, вероятно, сохраню как исходную уценку, так и HTML-версии содержимого. Фактически, я сделал аналогичные вещи (с урезанным минимальным HTML вместо Markdown), где я сохранил как raw, так и отформатированные версии.

Если вы хотите отредактировать содержимое после его создания, вам понадобится исходная уценка, поскольку с ней, вероятно, будет легче работать, чем с какой-то уродливой уценкой, которая вышла из конвертера уценки в HTML. Держать Markdown вокруг будет также сделать его легче отслеживать историю изменений или настроить формат HTML в будущем.

отображение содержимого, вероятно, будет более распространенным, чем его создание или редактирование. Таким образом, вы, вероятно, захотите, чтобы HTML был удобен, чтобы не делать одну и ту же уценку для преобразования HTML снова и снова.

Если у вас есть только уценка, то вы платите дополнительно за каждый дисплей. Если у вас есть только HTML, то вы будете в конечном итоге с уродливым и не читается/не редактируются уценки. Если у вас есть оба, вы платите за немного места на диске, но получаете возможность легко регенерировать HTML с другой внутренней структурой, легко отслеживать историю изменений, легко редактировать, и вы получаете дешевые дисплеи как счастливый побочный эффект. Кроме того, хранение обоих позволяет легко хранить фрагменты для массовых списков (например,/questions списки на SO), и эти списки будут дешевыми, потому что вы сбрасываете данные прямо из хранилища на страницу с минимальной обработкой.