【问题标题】:Speed up Sinatra page load with Ajax?使用 Ajax 加速 Sinatra 页面加载?
【发布时间】:2015-03-19 13:00:30
【问题描述】:

我正在使用 Sinatra 开发 Web 应用程序,但我遇到了页面加载时间过长的问题。

应用程序通过并显示大量数据,所以我确定这是原因,但我想知道是否有办法让页面的主 erb 布局首先加载,然后在加载后加载数据在它之上。

我的第一个想法是 AJAX,但我不确定如何实现它。

提前致谢。

【问题讨论】:

    标签: ruby ajax load sinatra erb


    【解决方案1】:

    你是对的,它可能会有所帮助。 “将变化与不变分开”这句古老的口头禅适用于编程的任何部分。

    这里是返回一些数据的路由:

    require 'json'
    get "/time-now/?" do
      content_type :json
      {time: Time.now.to_s}.to_json
    end
    

    这里有一些 javascript (jQuery ajax) 来调用它:

    $.ajax({
      accepts: "application/json",
      type: "GET",
      url: "/time-now",
      dataType: "json",
      success: function(res, status, xhr) {
        return [$("#time").html(res)];
      },
      error: function(res, status, xhr) {
        return [$("#time").addClass("error")];
      },
      complete: function(res, status, xhr) {
        return [$("#button1").show()];
      }
    });
    

    (那一点 jQuery 可能有点错误,只是警告你,这是一个复制粘贴作业,以适应这个例子)

    也许您可以停止从 Sinatra 路由为用户页面提供服务,并使用其中包含 javascript 的静态(即预构建)页面来对 Sinatra 路由进行 AJAX 调用。或者两种类型的混合。然后您就开始使用 Web 服务数据 API。有很多 javascript 框架可以帮助解决这个问题(例如 Ember、Backbone、Angular 等等)以及 Sinatra 旁边的大量 API 构建器,例如 Grape 和 Weasel Diesel。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-09
      • 1970-01-01
      相关资源
      最近更新 更多