我在带有 PostgreSQL 8.4 和 WEBrick 的 Ubuntu 上运行 Rails 3。
它一直运行良好,但是当显示一个大表(数百行)时,出现了问题。浏览器显示页面仍在加载,但看起来查询结果被截断或 Rails 出现故障。日志或控制台中没有错误。
下面的第 8 行是格式错误的 HTML。它出现在表的第 140 行附近。但它会在下面的行之后继续显示更多行。
<tr class="from_hc">
<td class="date_and_time">Jul 13, 2011 11:00 AM</td>
<td class="name">Kim Orange</td>
<td>PHYSICAL_ACTIVITY</td>
<td>text text</td>
<td>ok</td>
<td></td>
<td><a href="/messag/a></td>
</tr>
<tr class="from_hc">
<td class="date_and_time">Jul 13, 2011 11:00 AM</td>
<td class="name">Tom White</td>
<td>PHYSICAL_ACTIVITY</td>
<td>text text</td>
<td>ok</td>
<td></td>
<td><a href="/messages/260/edit">Edit</a></td>
</tr>
是不是返回的行数有问题?是否需要在 Rails、PostgreSQL 或 WEBrick 中设置配置?这可能是 SSL 的问题吗?什么可能导致这种情况?
相同的代码和表在 Heroku 上工作正常,所以我想知道这是否是 WEBrick 配置问题...
我增加了 Postgres 的“shared_memory”,但没有帮助。
谢谢!!!
最佳答案
您很可能遇到响应时间超时或内存/服务器资源限制。
您永远不应该在任何应用程序中真正返回大量数据,更不用说网络应用程序,因为数据变得完全没有意义。 如果这是一个 View ,那么使用分页,这样一次只处理少量数据(人们只是无法理解那么多记录)
如果你需要这个来进行一些统计分析,那么运行一个后台任务(也许是 rake 任务?)来收集数据,分析它并输出一个简单的单一记录,其中包含所有计算的统计数据
如果这是某种提要或导出功能,那么最好的解决方案是 rake 任务中的后台作业,该作业将生成最终的 xml 文档文件,该文件存储为 Assets ,可以在适当的时间由您的应用程序提供
除了避免让用户坐着盯着显示器长时间等待之外,您还面临着占用服务器的危险,其他访问者的响应时间将急剧下降。
这是非常糟糕的做法。它花费金钱和时间。您(带宽和服务器资源)和您的访问者都必须等待更长的时间(时间就是金钱),如果在云上按 MB 主机付费,您将获得更大的托管费用,所以我强烈建议您改变您的方法。
根据经验,做谷歌做的事,每页提供 10 个结果(有多少冲浪者在搜索结果中超过第 10 页?)
关于html - Rails、Webrick 或 PostgreSQL 有问题吗?数据库查询后生成格式错误的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6739469/