我正在研究可以抓取几个站点以获取数据的混搭。我想按需抓取和缓存数据,而不是索引整个站点。
第一次获取数据时,操作可能非常缓慢——至少几分钟。
像这样逐行显示页面的最佳做法是什么?有没有办法动态显示页面,在获取数据时显示数据?
有关的:
我正在研究可以抓取几个站点以获取数据的混搭。我想按需抓取和缓存数据,而不是索引整个站点。
第一次获取数据时,操作可能非常缓慢——至少几分钟。
像这样逐行显示页面的最佳做法是什么?有没有办法动态显示页面,在获取数据时显示数据?
有关的:
我使用 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();
})
;
看起来 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