【问题标题】:Markdown or HTML降价或 HTML
【发布时间】:2010-07-28 15:45:08
【问题描述】:

我要求用户创建、修改和删除自己的文章。我计划使用 SO 用来创建文章的 WMD 编辑器。

据我所知,SO 存储了降价和 HTML。为什么这样做 - 有什么好处?

我无法决定是否存储降价、HTML 或两者。如果我同时存储哪一个,我将检索并转换为显示给用户。

更新:

好的,我认为从目前的答案来看,我应该同时存储 markdown 和 HTML。这看起来很酷。我也一直在阅读 Jeff 关于 XSS 攻击的博客文章。因为 WMD 编辑器允许您输入任何 HTML,这可能会让我有些头疼。

有问题的博文是here。我猜我将不得不遵循与 SO 相同的方法 - 并清理服务器端的输入。

SO 使用的清理代码是否可作为开源提供,还是我必须从头开始?

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: html markdown


    【解决方案1】:

    存储两者在性能和兼容性(以及最终社会控制)方面非常有用/有帮助。

    如果您存储 Markdown(或任何非 HTML 标记),那么每次都将其解析为 HTML 风格会降低性能。这并不总是很便宜。

    如果您只存储 HTML,那么您将冒着在生成的 HTML 中悄悄潜入错误的风险。这将导致大量的维护和错误修复头痛。您还将失去社交控制,因为您不再知道用户实际上填写了什么。例如,作为管理员,您还想知道哪些用户正在尝试使用 XSS <script> 等等。此外,最终用户将无法编辑 Markdown 格式的数据。您需要将其从 HTML 转换回来。

    要在每次 Markdown 版本更改时更新 HTML,您只需添加一个额外的字段来表示用于生成 HTML 输出的 Markdown 版本。只要在您检索行时服务器端发生了更改,请使用新版本重新解析数据并更新数据库中的行。这只是一次性的额外费用。

    【讨论】:

    • 仅存储 HTML 的另一个风险是,如果您需要编辑,则无需依赖从 HTML 到 Markdown 的一对一转换
    • @neo: “另外,最终用户将无法编辑 Markdown 格式的数据。您需要将其从 HTML 转换回来。”跨度>
    • 当您说最好同时存储两者时,您的意思是在数据库中,一个应该有两列 VARCHAR,一列用于用户提交的 Markdown,另一列用于您的代码已转换为的 Markdown HTML?我说的对吗?
    【解决方案2】:

    通过存储两者,您只需处理一次降价(发布时)。然后,您将检索 HTML,以便您可以更快地加载您的页面。

    【讨论】:

      【解决方案3】:

      如果您只存储一个,您将永远必须为显示视图或编辑视图重新创建另一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-01
        • 2016-01-26
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 1970-01-01
        相关资源
        最近更新 更多