Обслуживание динамического zip файлы через Apache

Одна из обязанностей моего приложения Rails - создавать и обслуживать подписанные xmls. Любой подписанный xml, однажды созданный, никогда не изменяется. Поэтому я сохраняю каждый XML-файл в общедоступной папке и перенаправляю клиента соответствующим образом, чтобы избежать ненужной обработки с контроллера.

Теперь мне нужна новая функция: каждый XML-файл связан с датой, и я бы хотелось бы реализовать возможность обслуживания сжатого файла, содержащего каждый xml, дата которого находится в периоде, указанном клиентом. Тем не менее, период не может быть ограничен менее чем одним месяцем, чтобы функция была полезной, и это означает, что размер некоторых обслуживаемых zip-файлов будет достигать 50 МБ.

Мое приложение развернуто как пассажирский модуль Apache. Таким образом, совершенно недопустимо обслуживать файл с send_data , поскольку клиенту придется дождаться создания всего сжатого файла до начала фактической загрузки. Хотя у меня есть представление о том, как реализовать эту функцию в Rails, чтобы сжатый файл создавался во время обслуживания , я чувствую, что моему серверу не хватит ресурсов, как только некоторые длительные процессы Ruby / Passenger будут выделены для обслуживания больших zip-файлы.

Я читал о лучшем решении для обслуживания статических файлов через Apache, но не динамических.

Итак, каково решение проблемы? Мне нужно что-то вроде специального обработчика Apache? Как мне сообщить Apache из моего приложения, как обрабатывать запрос, одновременно сжимая файлы и передавая результат в потоковом режиме?

8
задан tshepang 14 July 2014 в 17:59
поделиться