我应该存储解析的文本吗?如果是的话,在哪里?

时间:2012-02-08 14:31:24

标签: php database parsing caching

在我的申请中,我选择了markdown作为某些文本的格式 显然,解析文本需要一些时间。

问题是,值得缓存吗?如果是这样,在哪里?文本文件或数据库?

在我看来,我有三个选择:

  • 不要缓存。每次从数据库中提取文本并显示时运行解析 (在Symfony2 / Twig中,我只是做{{ text|markdown }}

  • 在数据库中有两个字段content_sourcecontent_parsed。每次编辑文本时,保存解析的代码,并在需要时,只显示缓存的代码。

  • 将解析后的代码缓存为文件。请求时,检查文件是否存在(如果没有,解析并缓存)并显示它。

思想?

2 个答案:

答案 0 :(得分:3)

就个人而言,我会将源和解析的内容都存储在数据库中,除非内容变得很大。每次解析都会成为一个很大的可扩展性问题。

而且,这取决于您是否需要访问原始内容。当我处于类似情况时,我发现我们可能会更改我们解析此类内容的方式,并需要返回并重新解析所有旧内容,因此保留原始内容绝对方便

答案 1 :(得分:2)

选项2: 迭代每个“页面”解析MarkDown文本,重新保存到表中作为完全解析。 IIRC具有良好优化的db,db将比fs open / writes更快。

您可以使用cron任务在每晚或低负载时迭代db。