2015-01-21 96 views
1

我正在使用Sinatra開發一個Web應用程序,但我遇到了很長的頁面加載時間問題。使用Ajax加快Sinatra頁面加載速度?

該應用程序經歷並顯示了大量的數據,所以我確信這是原因,但我想知道是否有一種方法可以首先加載頁面的主要erb佈局,然後在加載之後,數據加載它的頂部。

我的第一個想法是AJAX,但我不知道如何實現這一點。

在此先感謝。

回答

2

你是對的,它可能有幫助。 「將不同於未改變的」分開的舊口號適用於編程的任何部分。

這裏是一個返回一些數據路徑:

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的那一位可以是一點點錯,只是警告你,這是一個副本'n粘貼工作黑客來適應這個例子)

也許你可以停止服務用戶頁面從Sinatra路線和使用靜態(即預建)頁面在他們的AJAX調用Sinatra路線的JavaScript。或者兩種類型的混合物。然後你已經有了一個Web服務數據API的開始。有很多javascript框架可以幫助解決這個問題(例如Ember,Backbone,Angular等)以及大量的API構建器,例如GrapeWeasel Diesel

+1

謝謝!那很完美! – imtuned 2015-01-21 18:36:37