19

我将在我正在从事的项目中实现一种轻量级格式化语言(可能是 Textile,可能是 Markdown),我想知道如何最好地将它存储在数据库中。

如果用户能够编辑他们发布的内容,对我来说存储原始的、未转换的标记是有意义的,这样用户下次就不必编辑 HTML。但由于内容将比编辑的内容更多地显示,因此存储内容的转换副本也是有意义的,这样就不必在每次页面查看时都通过 Textile 发送原始内容。

那么,将原始内容和转换后的内容并排存储在数据库中是一种常见的做法吗?有没有更好的办法?

谢谢!

4

4 回答 4

25

商店降价:

  • 每次观看 = 转化
  • 每次编辑 = 不处理

存储html

  • 每个视图 = 不处理
  • 每次编辑 = 转换为降价并返回

存储两者

  • 每个视图 = 不处理
  • 每次编辑 = 编辑后转换为 html

您必须权衡处理成本与存储成本。

于 2009-01-29T17:12:03.900 回答
1

您应该明确地存储原始 Textile/Markdown 标记并使用标准 HTTP 缓存内容(Last-modified、Expires-At、ETag)来缓存渲染页面或仅缓存处理标记的结果。

于 2009-01-29T17:09:49.317 回答
1

我目前正在将 Markdown 与 PHP 一起使用。我将降价源存储在数据库中,并根据要求显示转换后的版本。我没有性能问题,并且对此设置非常满意。

于 2009-01-29T17:10:45.587 回答
1

我所看到的确实是将编译后的 HTML 存储在数据库中的单独行中。只需有一行“content”和另一行“content_html”,并将编译后的 HTML 保存在“content_html”行中。

(您肯定有某种可以覆盖的保存方法来执行此操作吗?)

于 2009-01-29T17:11:02.827 回答