Markdown转换为HTML

3
我想让用户使用Markdown编辑文章,并将其转换为HTML进行显示。我使用pagedown来实现这一点。但我希望用户能够在以后编辑他们的文章,这意味着在将Markdown代码转换为HTML后,向他们发送Markdown代码。我不知道最好的方法是什么。我有以下想法:
- 使用toMarkdown将HTML转换为Markdown,但它的效果并不好。 - 仅存储Markdown代码,这意味着数据库可能包含有害代码,需要用户对内容进行过滤。如果只在我的网站上使用,那还好,但如果有人想要访问它并忘记在他的应用程序中过滤内容怎么办? - 存储Markdown和HTML,服务器端将Markdown转换为HTML并对HTML进行过滤,当用户想要编辑一篇文章时,我们发送Markdown代码,当他想要查看时则发送HTML。问题是数据库将不得不存储更多的数据量。 - 还有更好的方法吗?
一个很好的做到这点的网站例子是stackoverflow,但我对他们使用的方法一无所知。

1
存储Markdown和生成的HTML,或者仅存储Markdown并使服务器(或客户端)实时生成HTML。无论哪种方式,您都需要存储Markdown。 - lucuma
2个回答

5

个人建议只存储Markdown格式的文本,然后使用类似memcached的缓存工具来加速页面加载时的HTML生成。

在页面加载时从Markdown生成HTML -> 缓存它 -> 一段时间内使用缓存。当您编辑它时,要么使缓存失效,要么重新激活缓存以避免用户为您执行此操作。


那么,如果用户使用自己的应用程序,您相信他们会自行清理数据吗? - Carl Levasseur
1
我不太确定为什么会这样?您的系统用户是否将直接与数据库交互?如果他们通过公共API或其他方式进行操作,则应在那里对数据进行消毒处理。如果您正在创建应用程序,其中一个角色就是定义经过消毒处理的输入内容,并控制其内容。使用您的服务的人可以随时请求HTML,然后您可以即时生成它。 - Seer

2
问题在于数据库将必须存储更多的数据。你有多少内容?大多数处理人类生成内容的应用程序都不会有那么多兆字节的内容,除非你想用大约 20GB 的空间重建英文维基百科。无论如何,存储Markdown都是有用的。除了使用memcached 存储Markdown和HTML之外,还可以查看一些静态网站生成器,它们按定义都同时存储这两者。static site generators

不会有太多的数据,而且所有数据都是由人类生成的。只是将数据存储两次的事实让我感到困扰。 - Carl Levasseur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接