【问题标题】:Can I display a slow-loading web page incrementally?我可以逐步显示加载缓慢的网页吗?
【发布时间】:2013-08-16 19:34:10
【问题描述】:

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

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

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

相关:

【问题讨论】:

    标签: ruby-on-rails html performance server-sent-events


    【解决方案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
    

    works/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();
          })
      ;
    

    【讨论】:

    • 非常感谢您花时间回答这个问题。我实际上是在寻找一个 Ruby on Rails 解决方案——这就是为什么用它来标记问题。
    • 如果你遇到了,请告诉我!我的是一个 Rails 应用程序,这是我能想到的最好的应用程序。
    • 会的,你也可以给问题加星标关注。
    【解决方案2】:

    看起来 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-14
      • 2014-08-13
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      相关资源
      最近更新 更多