0
我在Rails控制器執行以下操作:我應該期待Comet這麼慢嗎?
def poll
records = []
start_time = Time.now.to_i
while records.length == 0 do
records = Something.uncached{Something.find(:all,
:conditions => { :some_condition => false})}
if records.length > 0
break
end
sleep 1
if Time.now.to_i - start_time >= 20
break
end
end
responseData = []
records.each do |record|
responseData << {
'something' => record.some_value
}
# Flag message as received.
record.some_condition = true
record.save
end
render :text => responseData.to_json
end
,然後我已使用Javascript執行AJAX請求。請求在那裏停留20秒,或直到控制器方法在數據庫中找到一條記錄,等待。這樣可行。
function poll() {
$.ajax({
url: '/my_controller/poll',
type: 'GET',
dataType: 'json',
cache: false,
data: 'time=' + new Date().getTime(),
success: function(response) {
// show response here
},
complete: function() {
poll();
},
error: function() {
alert('error');
poll();
}
});
}
當我在瀏覽器中打開5 - 10個選項卡時,我的web應用程序變得非常慢。
這是預期的嗎?或者我可以做出一些明顯的改進?