当我需要呈现HTML和"简单文本"视图时,在我的数据库中存储支持markdown的字段的最佳方法是什么?

leo*_*ora 8 javascript asp.net-mvc markdown database-design

我有一个数据库,我有一个网站前端.我的前端有一个字段现在是文本但我希望它支持markdown.我试图弄清楚权利是存储在我的数据库中,因为我有各种需要支持的视图(PDF报告,网页,Excel文件等)?

我担心的是,由于其中一些观点不支持HTML,我不仅希望拥有该字段的HTML版本.

我应该存储2个副本(仅一个文本和一个HTML吗?),或者我应该存储HTML并在运行时尝试在我渲染到Excel时删除它们HTML标记?

我需要弄清楚要存储在数据库中的正确格式(或格式),以便能够呈现两者:

  • HTML和
  • 常规文本(没有markdown或HTML语法)

任何建议都会受到赞赏,因为我不想走错路.我的观点是,我不想在Excel输出中显示任何HTML标记或markdown语法.

Bra*_*vic 11

决定这样:

  1. 存储原始数据(带标记的文本).
  2. 动态生成派生数据(HTML和纯文本).
  3. 衡量表现:
    • 如果它是可以接受的,你就完成了,哇哦!
    • 如果不是,请缓存派生数据.

缓存可以通过多种方式完成...您可以立即生成派生数据,并将其存储在数据库中,或者您最初可以存储NULL并懒惰地生成(如果需要的话).您甚至可以将其缓存在数据库之外.

但无论你做什么,都要确保缓存永远不会"陈旧" - 即当原始数据发生变化时,必须重新生成缓存中的派生数据,或者至少以某种方式将其标记为"脏".一种方法是通过触发器.


WW.*_*WW. 6

您需要以规范格式存储数据.也就是说,在数据库中使用一种真正的格式.听起来这种格式应该是包含markdown的文本列.这回答了问题的数据库设计部分.

然后,根据您需要导出的格式,您应该采用规范格式并将其转换为所需的输出格式.这可能只是输出markdown文本,或者通过某种解析器运行它来删除markdown或将其转换为HTML.

  • 从“简洁设计”的角度来看,_规范_数据的概念对于理解至关重要。您应该始终尝试仅存储数据的规范形式,并从中转换为其他表示形式。唯一的例外是转换成本是一个瓶颈,需要您缓存替代表示。 (2认同)