我正在使用mashup来抓取几个网站以获取数据。我想按需抓取和缓存数据,而不是索引整个网站。
第一次获取数据时,操作可能非常慢 - 至少几分钟。
这样逐行显示页面的最佳做法是什么?有没有办法动态显示页面,显示获取的数据?
相关:
答案 0 :(得分:1)
我使用jquery允许在单击按钮时呈现每个昂贵的部分:
观点:
#book_forecast
= link_to 'See Sales Estimates' , book_forecast_work_update_path(:work => @work), :remote => true
book_forecast.js.erb:
$( "#book_forecast" ).html( "<%= escape_javascript( render( :partial => 'works/work_update/evaluation_forecast', :locals => { :work => @work} ) ) %>" );
work_update控制器:
def book_forecast
@work = Work.find(params[:work])
respond_to do | format |
format.js
end
end
工作/ work_update / evaluation_forecast.html.haml:
# slow-loading code
缺点是用户必须单击按钮才能渲染每个部分,但另一方面,使用jquery而不是正常渲染意味着在页面加载时不会运行昂贵的代码。
您还可以使用“加载”图标,以便在繁重的代码运行时用户可以查看某些内容,例如:
同样的观点:
#loading
%h2
.notice
Loading, please wait...
JS:
$(document).ready(function () {
$('#loading')
.hide()
.ajaxStart(function() {
$(this).show();
})
.ajaxStop(function() {
$(this).hide();
})
;
答案 1 :(得分:0)
看起来像Rails Live Streaming是一种方法。缺点是它似乎是高度依赖Web服务器和敏感的。这是一个教程:
http://tenderlovemaking.com/2012/07/30/is-it-live.html
class MyController < ActionController::Base
include ActionController::Live
def index
100.times {
response.stream.write "hello world\n"
}
response.stream.close
end
end