2011-01-29 81 views
1

我正在做一些自定义的请求缓存,并且我想在响应已经发送到服务器之后执行缓慢的保存到磁盘步骤。Rails3 - 如何在请求发送到浏览器后处理过滤器

标准的after_filter在响应发送到客户端之前运行。

根据rails系统的工作原理,可能这是不可能的,因为它只在完成处理请求时才发回数据。

从我发现一些老问题,这似乎是一个Rack中间件可能是答案,但没有一个例子似乎远程相关,如:https://github.com/rack/rack/wiki/List-of-Middleware

我还需要访问@应答和参数对象,但我认为这是可能的。

谢谢!

+0

我have'nt我自己试过,但这篇文章可能是你的帮助:http://bibwild.wordpress.com/2011/11/14/multi-threading-in-rails-activerecord-3-0-3- 1 /总之:你必须使用线程 – 2012-07-21 16:50:07

回答

0

有一些我无法理解你的目标。

如果缓存是透明地存储数据,因此该数据的未来请求可以更快地服务,你应该担心使缓存的内容,尽快提供给将来的请求,即使这意味着一个组件要求第一个请求等待几ms以发送响应。

如果写入到磁盘上被认为是在上下文太慢了,你可以尝试从事其他后端缓存的一个Rails的支持。

你也可以添加与Resquedelayed_job后台作业;该作业将负责创建缓存并与响应异步。但是缓存的目的和缓存的内容一样会被遗漏。

+0

最快!=最常见。所以我的想法是,我希望另一个用户在写入文档所需的50ms内请求相同页面的概率为1%,而不是让第一个用户等待50ms。 – Kevin 2011-01-31 04:39:12

相关问题