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 响应时间作斗争。这是个好主意吗?请帮助提供实施细节的主要内容,如果未能解决你的问题,请参考以下文章

描述性 URL 与基本 URL

ImageView 中较长的 gif 持续时间

[LeetCode] 350. 两个数组的交集 II

持续时间较长的 CSS 过渡宽度/位置问题

在较长的触摸时增加跳跃高度,直到最大高度

如何使用依赖于包装它的较短列表的 map 循环较长的列表以将某些函数应用于 Common Lisp 中的较长列表?