如何将数据库密集型页面从rails中的后台进程存储到缓存中

时间:2011-02-05 21:17:05

标签: ruby-on-rails memcached backgroundworker

在我的网站上,我有一个数据库密集型页面,我将其缓存5分钟。但是当缓存过期并且必须重新呈现页面时,性能仍会受到影响。我在想为什么不在5分钟内从后台进程(如工作)计算一次页面并将其存储在缓存中,并让用户请求每次都从缓存中提供。因此,没有用户必须等待呈现此页面。

有没有一种有效的方法呢? 非常感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:1)

我建议您只需在后台作业或cron作业中调用您的网络服务器。然后让你的整个Rails堆栈处理这个调用。您可以创建一个cron作业,每4-5分钟执行一次,并将参数传递给页面以强制执行缓存刷新,例如:

complex/page?force=true

您的控制器/操作/模型将检查是否存在此参数。如果存在force,则页面将不使用缓存版本,而是重新创建缓存。