我应该将存储的Markdown转换为HTML,还是应该只存储HTML?

时间:2012-05-04 22:27:15

标签: php markdown

Markdown似乎比HTML更容易编写和编辑。我见过的所有HTML编辑器都输出了大量不必要的垃圾。 Markdown似乎更清洁。

以下是我正在考虑的事项:在数据库中存储markdown,使用PHP Markdown将其转换为HTML,然后将其输出到Web浏览器。

一个问题是每次请求页面时都必须执行此操作。这似乎有点贵。

这是个好主意吗?或者有更有效的方法吗?

4 个答案:

答案 0 :(得分:28)

作为一个实际示例,Stack Overflow支持Markdown(如您所知),但将 Markdown和呈现的HTML存储在数据库中。这使得提供页面的速度更快,因为呈现的HTML总是相同的。帖子的创建频率远低于向用户显示的帖子。

答案 1 :(得分:8)

从您的网站退后,并问自己它真的会“昂贵”。你每天服务超过1000个唯一身份用户吗?实际上,它会膨胀吗?有了这些问题,答案就不明确了。例如,当我为国际银行构建网站时,非最小化的CSS文档每天可以增加1千兆字节的带宽。但是,当我构建我的投资组合网站时,我预计会有一小部分流量。

我当然不是在倡导构建效率低下的代码......请记住,“成本”应该真正被视为流程执行时间,而不仅仅是流程。

如果您真的担心,请在执行PHP Markdown流程之前和之后进行记录。然后,以A / B方式跟踪服务器负载一段时间。数字不是谎言。

答案 2 :(得分:1)

你可以存储两者。如果必须多次编辑,或者如果开发了另一个或更好的Markdown to HTML翻译,则存储的markdown非常有用。正如您所说,存储的HTML非常有用,可以避免一次又一次地重新生成它。

答案 3 :(得分:1)

我最近完成了一个非常类似于你所要求的项目。我没有在数据库中存储完整的HTML,而是选择使用专有API在文件系统上存储标记的html,就像MongoDB一样。存储标记与完整存储的美妙之处在于文件系统上的足迹要小得多,如果您需要查看原始标记,则更容易阅读。当用户编辑html时,我会渲染完整版,以便他们可以看到它的样子。

还有其他建议存储两者,我不太同意。如果您希望通过不必为每个请求标记标记版本来提高性能,那么我会考虑在每次编辑时缓存完整版本。当您在磁盘空间和/或数据库操作中支付罚金时,存储标记和完全破坏都会使标记失败。