Я работаю над потоковой загрузкой (CSV) из Rails 3.2 и столкнулся с проблемой, когда начальный запрос страницы занимает много времени. Следующий код контроллера иллюстрирует мою проблему:
self.response_body = Enumerator.new do |y|
10_000_000.times do
y << "Hello World"
end
end
При вышеизложенном ответ действительно выглядит как поток (от сервера, который может его поддерживать... Unicorn, в моем случае). Тем не менее, прежде чем он начнет потоковую передачу, он зависает гораздо дольше, чем мне хотелось бы. Если я изменю его на следующий, он запустится намного быстрее:
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
РЕДАКТИРОВАТЬ:
I думаюRack-Cache может быть причиной моей проблемы... могу ли я отключить его для отдельного запроса?
РЕДАКТИРОВАТЬ и РЕШЕНО:
Я ошибался насчет Rack-Cache. мне просто нужно было добавить self.response.headers['Last-Modified'] = Time.now.ctime.to_s
к моему ответу.