2013-05-14 4 views
1

На каком-то уровне, что я делаю что-то очень похожее на это сообщение: how to serve dynamic content in playframework 2Обслуживание динамического контента в Play 2.x

Что является то, что у меня есть веб-приложение, где клиенты могут указать различные параметры, и мы имеем Play ! сервер инициирует процесс, который генерирует пользовательский файл образа ... который затем должен быть возвращен этому клиенту, предпочтительно Play!

Ожидаемая продолжительность жизни изображения может составлять от нескольких секунд до нескольких минут (может быть, даже часов). С этой точки зрения у нас есть основания полагать, что попытка отправить данные изображения напрямую с ответом не является жизнеспособным подходом ... и вместо этого отправит URL-адрес этому динамическому изображению.

Я также очень сильно предпочел бы НЕ полагаться на отдельный HTTP-сервер, настроенный для обслуживания этих динамических изображений по разным причинам. Я считаю, что причин многих, в том числе, но не ограничиваясь ... поддержание более простой архитектуры как для рабочих сред разработчиков, так и для производственных серверов. У нас очень небольшая/ограниченная пользовательская база с очень небольшим количеством одновременных пользователей (я не думаю, что обслуживание этих изображений должно быть очень высокой производительности в любом случае - если Play! Может обслуживать эти динамические изображения, мне трудно представить, что производительность не будет вполне приемлемой, учитывая компромисс простоты).

Я читал, что Играю! активы в общедоступной/папке скомпилированы в время сборки/компиляции файла .jar, что, по-видимому, объясняет, почему мои тесты генерации динамических изображений и обслуживания обратно не работают должным образом - результаты, которые были возвращены, всегда относятся к предыдущей сборке.

Может ли кто-нибудь предложить способ обслуживания динамических активов обратно, не полагаясь на другой сервер?

+0

1. Не пытайтесь смешивать статические активы (в каталоге 'public /') с динамически генерируемыми изображениями, которые вы сохранили на диске. Это может закончиться тем, что кто-то пострадает. 2. Правильный способ обслуживания этих изображений - генерировать их по каждому запросу. Итак, теперь, когда у нас есть способ генерировать ваш ответ (изображение), единственное, что нужно для его ускорения, - это кеширование. Прежде всего: вы упомянули, что у вас не так много запросов на служение. Просто генерировать их на лету без кеширования достаточно быстро? В противном случае вы можете просто кэшировать все изображение? – Carsten

ответ

0

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

Единственное, что может заставить его выглядеть неработоспособным, это то, что любые активы, уже существующие в общедоступной папке при компиляции приложения, будут скомпилированы в файл .jar. Если вы пишете новый файл с именем/path, который соответствует тому, который был скомпилирован в этот .jar-файл, вы просто возвращаете скомпилированный файл, а не новый файл. Если файл не существует в .jar, он возвращается обратно в порядке.

Это может быть не очень хорошая идея, но я думаю, что это приемлемое решение для того, что мы пытаемся сделать.

Смежные вопросы