Rails rails 调用一个耗时的外部命令,整个应用被卡死。

zqalyc · 2014年03月19日 · 最后由 guyanbiao 回复于 2014年03月21日 · 2970 次阅读

我有个 gem 包,其中的 a 页面用到 ajax 请求一个外部命令,特别耗时。获取数据后在 a 页面用 js 处理显示(因为此时显示的是大量的影像数据所以更耗时)。然后主程序 b 页面又显示 a 页面,这样导致在没有加载完这个 b 页面之前,点击这个项目其他功能没有反应,整个应用都被卡死了。现在想到的唯一的方法就是重新部署一个项目,使用这个 gem 包,然后再用 iframe 去调用这个程序的 a 页面。 rails 可以开启进程调用某个方法后,再用这个进程在浏览器渲染出一个页面吗? 大家有什么好的办法么?

放到后台队列(resque),处理完成通知(faye)前台处理。have a try!

#1 楼 @scott #2 楼 @guyanbiao a 页面用 js 解析从后台传来的二进制数据然后显示出来也特别耗费时间,这步只能在前台完成,这个有什么好的办法?

#3 楼 @zqalyc 在服务器解析?

#4 楼 @guyanbiao 只有 a 页面在浏览器显示出来以后,才会执行 ajax 请求获取和处理二进制流,这一步能在服务器实现吗?

服务器端只能说后台队列(resque 或者 sidekiq)+ 缓存,前端没办法。。。

也是,缓存试过了。目前先用另外一个项目加载 gem 包,然后再用 iframe 调用吧

预先生成

#5 楼 @zqalyc js 的计算你可以部分移到后端的吧,不知道你具体是要渲染什么

需要 登录 后方可回复, 如果你还没有账号请 注册新账号