在我的申请中,我选择了markdown作为某些文本的格式 显然,解析文本需要一些时间。
问题是,值得缓存吗?如果是这样,在哪里?文本文件或数据库?
在我看来,我有三个选择:
不要缓存。每次从数据库中提取文本并显示时运行解析
(在Symfony2 / Twig中,我只是做{{ text|markdown }}
)
在数据库中有两个字段content_source
和content_parsed
。每次编辑文本时,保存解析的代码,并在需要时,只显示缓存的代码。
将解析后的代码缓存为文件。请求时,检查文件是否存在(如果没有,解析并缓存)并显示它。
思想?
答案 0 :(得分:3)
就个人而言,我会将源和解析的内容都存储在数据库中,除非内容变得很大。每次解析都会成为一个很大的可扩展性问题。
而且,这取决于您是否需要访问原始内容。当我处于类似情况时,我发现我们可能会更改我们解析此类内容的方式,并需要返回并重新解析所有旧内容,因此保留原始内容绝对方便
答案 1 :(得分:2)
选项2: 迭代每个“页面”解析MarkDown文本,重新保存到表中作为完全解析。 IIRC具有良好优化的db,db将比fs open / writes更快。
您可以使用cron任务在每晚或低负载时迭代db。