1

我正在研究可以抓取几个站点以获取数据的混搭。我想按需抓取和缓存数据,而不是索引整个站点。

第一次获取数据时,操作可能非常缓慢——至少几分钟。

像这样逐行显示页面的最佳做法是什么?有没有办法动态显示页面,在获取数据时显示数据?

有关的:

4

2 回答 2

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();
      })
  ;
于 2013-08-15T14:25:39.193 回答
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
于 2013-08-15T16:59:28.760 回答