如何存储Markdown评论

时间:2010-02-05 21:42:41

标签: php database markdown

我想将Markdown用于我网站的评论系统,但我偶然发现了以下问题:我应该在数据库中存储什么 - Markdown中的原始评论,HTML中的解析评论,或两者兼而有之?

如果用户需要编辑他的评论,我需要用于查看的HTML版本和Markdown版本。如果我存储Markdown版本,我必须在运行时解析注释。如果我存储HTML版本,我需要在用户需要编辑它时将注释转换回Markdown(我为此找到了Markdownify但它并不完美无瑕)。如果我存储两个版本,我将使用的空间加倍。

什么是最好的选择?另外,Stack Overflow如何处理这个问题?

3 个答案:

答案 0 :(得分:16)

存储两者。它违反了数据库规范化的规则,但我认为在这种情况下速度优化是值得的 - 解析大量文本是一个非常慢的操作。

你只需要存储两次,但你可能需要服务数千次,所以这是一个时空权衡。

答案 1 :(得分:13)

存储原始markdown并在运行时解析。将转换后的版本存储在数据库中存在一些问题。

  1. 如果用户想要编辑他们的评论,则必须将解析后转换为原始降价
  2. 数据库中的空间(总是遵循规则,如果您不需要存储它,请不要这样做)
  3. 对markdown解析器所做的更改必须在数据库中的每个注释上运行,而不是仅在运行时显示。

答案 2 :(得分:5)

只需在运行时将Markdown渲染为HTML。

如果您的网站遇到性能问题,Markdown将是您将调整的最后内容之一。即便如此,我怀疑它是否有意义。

只需看看SO使用的实时JavaScript渲染器即可。这很快。

编辑: 对不起,我应该更清楚了。我的意思是在PHP中渲染。你会为自己省下很多头痛 - 你可能还有更重要的事情需要担心。