我要求用户创建,修改和删除自己的文章.我打算使用SO用来创建文章的WMD编辑器.
从我可以收集到的东西SO存储markdown和HTML.为什么这样做 - 有什么好处?
我无法决定是否存储降价,HTML或两者.如果我存储哪一个我检索并转换为显示给用户.
更新:
好吧,我想从目前为止的答案,我应该存储markdown和HTML.这看起来很酷.我也一直在阅读Jeff关于XSS漏洞的博客文章.因为WMD编辑器允许您输入任何HTML,这可能会让我感到头痛.
有问题的博文在这里.我猜我将不得不遵循与SO相同的方法 - 并清理服务器端的输入.
SO使用的清理代码是否可用作开源代码,还是我必须从头开始?
任何帮助将非常感激.
谢谢
在性能和兼容性方面(最终还有社会控制),存储两者都非常有用/有用.
如果只存储Markdown(或任何非HTML标记),那么每次将其解析为HTML风格都会产生性能成本.这并不总是明显便宜.
如果您只存储HTML,那么您将冒险在生成的HTML中无声地爬行.这将导致大量的维护和错误修复头痛.您也将失去社交控制权,因为您不再知道用户实际填写的内容.例如,您是管理员也想知道哪些用户正在尝试使用XSS 等等.此外,最终用户将无法以Markdown格式编辑数据.您需要将其从HTML转换回来.
要在Markdown版本的每次更改时更新HTML,您只需添加一个额外字段,表示用于生成HTML输出的Markdown版本.只要在检索行时在服务器端更改了此项,请使用新版本重新解析数据并更新数据库中的行.这只是一次性的额外费用.
通过存储两者,您只需要处理降价一次(当它被发布时).然后,您将检索HTML,以便更快地加载页面.