数据库里如何存储 Markdown, Textile 这样的语法文本
有两种不同的方法:
- 转成 html 格式保存进数据库,编辑的时候需要转换,读取的时候无需转换
- 直接保存原始语法格式,编辑的时候无需转换,读取的时候转换成 html
这两种方法各有什么利弊,怎样选择呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有两种不同的方法:
这两种方法各有什么利弊,怎样选择呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
数据库保存markdown,html渲染放缓存。
我的项目里没有markdown,但是对用户输入涉及很多转换处理。把转换处理后的html放入redis,设置一个较长缓存时间1个月,这样就兼顾了原始输入的保留和渲染效率。
任何一个系统,都是读远远大于写,因此,耗时的操作一般放在写,但是我并不建议在数据库里面存 html 文件,因为数据库要存放原始数据,毕竟这些数据需要反复编辑。
为了提高读的性能,可以把 markdown 转换成的 html 放入缓存。
这样还可以节省一次转换开销。
在数据库保存原始语法格式,可以在写数据库的同时写一份缓存,前台显示的时候从缓存读,编辑内容的时候从数据库读取。
我有一个建议,两种格式都存放,现在的存储空间并不贵,只是多保存了一次,虽然有点违背原则,但有很多优点:
用空间换取效率,一气呵成。
建议存html,毕竟是通用格式。
以前,都直接用的html编辑器,后来MD火了,大家又换MD编辑器,但如果哪天又出了个XX。。
我的建议是数据库必须存放用户输入的原始数据。
如果不这么做,哪一天用户想查看或者编辑自己的数据内容,却发现程序自作聪明把内容给变了,用户做何感想?(以前的百度空间就有这个问题,后来再也不用了)
至于速度的问题,在使用varnish等前端缓存的情况下(varnish还支持esi),其实这个问题我真不觉得有多大。