2012-12-19 78 views
3

我有一個應用程序,其中一些圖像將根據用戶輸入動態創建,並且我需要將這些圖像發送回用戶的瀏覽器。一旦用戶離開頁面後圖像開啓,圖像就不再需要了,所以我只需要足夠長的時間來爲它們服務。如何在playframework 2中爲動態內容提供服務

我知道如何使用Ok(sendFile(...))Ok(stream(...))控制器內發送圖像數據,但我不能繞到我的頭我怎麼會在img標籤指定src的路徑。更明確地說,我想我會有類似

<img [email protected](...) /> 

某處在我的模板中。

理想情況下,我不需要創建臨時文件來保存圖像,因爲這可能不需要發生很多輸入/輸出,儘管它似乎是獲取唯一標識符的最簡單方法我可以傳遞給serveImage控制器。

如果我嘗試提供內存中的圖像,我將如何爲圖像提供唯一的ID,確保它在網絡瀏覽器請求時在內存中可用,並在不再需要時刪除它?

謝謝! 託德

回答

3

生成unique ids is quite simple

「從內存中提供圖片,在不再需要時擺脫它」部分聽起來很像緩存給我。 Play爲此提供了Caching API

+0

感謝您回答這個問題時不要太居高臨下。我一上牀,「使用高速緩存」這個短語就來到了我的面前。 – TOB

+0

這對於動態生成的圖像來說也是一個很好的方法,可能想在我的服務器上生活一段時間?或者,如果這混淆了原來的問題,我只能發佈一個新的問題......但問題標題是指提供動態內容,以便其他人尋找我所問的內容可能最終會在這裏呢? – JDischler

+0

@JDischler我不知道你的確切用例(可能值得提一個問題,註釋字段非常小;-)),但是在我頭頂,我會選擇一個解決方案以任何方式用Play緩存圖像,而是在我的前端HTTP服務器上(我使用nginx)。當然,這隻有在您的圖像可以公開訪問時才能使用,您無需爲每個請求調用Play中的邏輯,並且圖像和URI之間存在唯一的映射。 – Carsten