Я работаю над потоковой загрузкой (CSV) из Rails 3.2 и сталкиваюсь с проблемой запроса начальной страницы, которая занимает много времени.Следующий код контроллера иллюстрирует мою проблему:
self.response_body = Enumerator.new do |y|
10_000_000.times do
y << "Hello World"
end
end
С учетом вышесказанного ответ действительно выглядит как потоковая передача (с сервера, который может его поддержать ... Единорог, в моем случае).Тем не менее, прежде чем он начнет потоковую передачу, он зависает гораздо дольше, чем хотелось бы.Если я изменю его на следующее, оно начнется намного быстрее:
self.response_body = Enumerator.new do |y|
1000.times do
y << "Hello World"
end
end
Насколько я понимаю, ответ должен начинаться с первой итерации цикла, но кажется, что большие циклы вызывают начальное время загрузкиудлинить.Если каждая итерация выводится так, как это происходит, разве не должно потребоваться одинаковое количество времени, чтобы запустить процесс потоковой передачи, независимо от того, сколько всего будет итераций ???
Спасибо за ваше понимание!
РЕДАКТИРОВАТЬ:
Вот объяснение техники, которую я пробую.Может быть, я неверно истолковываю или пропускаю шаг ?: http://facebook.stackoverflow.com/questions/3507594/ruby-on-rails-3-streaming-data-through-rails-to-client/4320399#4320399
РЕДАКТИРОВАТЬ:
Я думаю Rack-Cache может быть причиной моей проблемы ... могу ли я включить егоВыкл. для индивидуального запроса?
РЕДАКТИРОВАТЬ и РЕШЕНО:
Я ошибся насчет Rack-Cache.мне просто нужно добавить self.response.headers['Last-Modified'] = Time.now.ctime.to_s
к моему ответу.