рельсы могут отправлять данные в броузер блоками? - PullRequest
0 голосов
/ 14 мая 2010

У меня есть очень большой набор данных (100 000) для отображения, но любой браузер, который я пробовал, включая chrome 5 dev, заставляет их задыхаться на десятки секунд (win7 64-бит, 4 ГБ, 256 ГБ ssd, c2duo 2.4 ГГц). Я сделал небольшой эксперимент по

some_controller.rb

def show @data = (1..1000000) .to_a конец

show.html.erb

так просто, как это душит браузеры. Я знаю, что браузеры никогда не создавались для этого, поэтому я подумал, что данные должны поступать по частям, я думаю, что 2000 на порцию - это разумно, но я бы не хотел делать 50 запросов каждый раз, когда вызывается это представление, есть идеи? Он не должен быть частями, если их можно отправить сразу.

Best

Ответы [ 2 ]

1 голос
/ 14 мая 2010

Я видел плагин, который разрешал подобные вещи, но я не могу вспомнить, как он назывался .... будет продолжать трахать мои заметки.

А пока для нумерации страниц: p

Если ваш прецедент не поддерживает это, возможно, использование AJAX упростит вещи ... можно использовать AJAX для постепенной загрузки данных, либо по мере прокрутки пользователем, либо автоматически.

ОБНОВЛЕНИЕ: найден плагин потоковой передачи шаблона: http://github.com/oggy/template_streaming

1 голос
/ 14 мая 2010

Один из способов сделать это - использовать render, передав ему proc. Фрагмент кода ниже взят из документации Rails.

# Streams about 180 MB of generated data to the browser.
render :text => proc { |response, output|
  10_000_000.times do |i|
    output.write("This is line #{i}\n")
    output.flush
  end
}

http://api.rubyonrails.org/classes/ActionController/Base.html#M000658

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...