我想在我的论坛中实现 Markdown。
我研究了许多可能的方法,我将如何做到这一点,这就是我的想法:
一个简单的方法是在客户端使用 pagedown 并在服务器上使用 php-markdown。
我的方法是将纯 Markdown 保存到数据库,并在显示时转换为 HTML(使用 pagedown)。由于我的服务器端已经有了安全层(HTML 元素白名单)和所有必要的人员,所以我认为这里不会有任何损失。
在这种情况下我赢了什么?好吧,我必须修改 pagedown 以使用自定义按钮和模式。这对我来说很难同时维护 php 和 JavaScript。
我的问题是:这是个好方法吗? 要打破这个问题:
我不会使用客户端降价引擎。从一些快速的谷歌搜索来看,它非常消耗 CPU 资源。加载 30 个帖子会增加相当多的开销。
如果您将 MD 存储在数据库中,动态渲染为 HTML,然后使用一些可以很好地工作的缓存(memcached 或 redis)。
关于安全性,这里有一篇很好的读物,它需要一些额外的清理工作,删除脚本/链接/重定向等。
进一步阅读
正如 @Lex 所说,不建议从客户端转换 markdown。相反,您可以使用一些在线服务来为您转换 markdown top html。
看看 http://daringfireball.net/projects/markdown/dingus。您可以使用curl或其他东西将markdown发布到网站,然后废弃网站以获取html部分。
您也可以在这里看看 http://parsedown.org/
您有两个建议选项:
这是我的做法:
将 markdown 代码保存在数据库中并在渲染时将结果缓存在文件中(文件、Memcached 或您想要的任何缓存存储引擎)。这样,我将原始文件保留在数据库中,并且不会在每次访问页面时浪费资源来编译 markdown,而是提供缓存文件,直到它过期或因更改而被删除。