我正在做一些自定义的请求缓存,并且我想在响应已经发送到服务器之后执行缓慢的“保存到磁盘”步骤。
标准的after_filter在响应发送到客户端之前运行。
根据rails系统的工作原理,这可能是不可能的,因为它只在完成处理请求时才发回数据。
从我发现的一些较旧的问题来看,似乎Rack中间件可能就是答案,但没有一个例子与远程相关,例如:https://github.com/rack/rack/wiki/List-of-Middleware
我还需要访问@response和params对象,但我认为这是可能的。
谢谢!
答案 0 :(得分:0)
我无法理解你的目标。
如果缓存是一个透明存储数据的组件,以便可以更快地提供对该数据的未来请求,您应该担心尽快使缓存内容可用于将来的请求,即使这意味着要求第一个请求等待几毫秒才能发送响应。
如果在您的上下文中写入磁盘的速度太慢,您可以尝试使用Rails支持的其他缓存后端之一。
您还可以使用Resque或delayed_job添加后台作业;该作业将负责创建您的缓存,并将与响应异步。但同样,缓存的目的将与缓存的内容一起被遗漏。