Rails:使用 ajax 与较长的 http 响应时间作斗争。这是个好主意吗?请帮助提供实施细节
Posted
技术标签:
【中文标题】Rails:使用 ajax 与较长的 http 响应时间作斗争。这是个好主意吗?请帮助提供实施细节【英文标题】:Rails : fighting long http response times with ajax. Is it a good idea? Please, help with implementation details 【发布时间】:2011-02-02 21:11:06 【问题描述】:我搜索了一些教程,浏览了一些 SO 答案,但找不到解决我问题的方法。
我正在编写一个应该显示几乎实时股票图表的网站。 数据存储在不断更新的 mysql 数据库中,我编写了一个 find_by_sql 查询代码,它获取绘制图表所需的所有数据。一切都很好,除了性能 - 不同查询从数据库中获取所有数据需要一秒到一分钟,这次包括必要的(My)SQL 服务器端计算。这是完全不能接受的。
我的想法是:如果一次从 MySQL 服务器查询数据而不是整个数据集,则只需要大约 1-100ms 即可获得单个点。
我想数据获取过程可能是浏览器驱动的。在用户按下按钮以绘制图表后,控制器向数据库发出一个请求并呈现进度条,例如 1% 准备就绪。浏览器收到响应后,立即发出(ajax)请求,服务器获取下一条数据并渲染“2%”。
以此类推,直到所有数据都准备好并且服务器显示请求的图表。 这可以在rails+js中实现吗,网上有解决类似问题的教程吗?我想如果这件事完全可行的话,应该已经有人这样做了。
我已经阅读了几篇关于 ajax 的文章,我相信我确实了解一般原则,但我自己从未做过非平凡的 ajax 编程。
感谢您的宝贵时间!
【问题讨论】:
【参考方案1】:您可以使用显示动画 gif(表示“工作”)的 div 加载页面。然后,使用 body onload 启动您的 ajax 请求并替换该 div 的内容。
<body onload="some function call to Ajax.Updater('chart')">
<div id="chart">
<img src="working.gif">
</div>
【讨论】:
这确实是一个很好的方法。用户知道您的应用程序正在处理数据,您可以使用您已经编写的相同编程逻辑。以上是关于Rails:使用 ajax 与较长的 http 响应时间作斗争。这是个好主意吗?请帮助提供实施细节的主要内容,如果未能解决你的问题,请参考以下文章