Потоковая передача Rails 3.2

Я работаю над потоковой загрузкой (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к моему ответу.

9
задан Matt Fordham 26 April 2012 в 21:12
поделиться