2012-05-28 112 views
4

ellou」玩家直接提供文件服務

我需要箱子定製的小應用程序的目的​​式的解決方案,不知道什麼是服務文件直接與發揮最好的辦法,但在沒有放置應用程序的public目錄?我需要訪問FTP上傳文件夾。

假設我的應用程序是從/home/myaccount/playapps/app201文件夾運行的,並且地址爲http://somedomain.tld。我也有一個文件夾指向/home/myaccount/ftp_upload的普通FTP帳戶。

服務文件/home/myaccount/ftp_upload/folder_1/sub_2/file.txthttp://somedomain.tld/ftp_upload/folder_1/sub_2/file.txt(沒有任何檢查和限制)的最佳方式是什麼?

  • 一種選擇是使用HTTP服務器,並設置獨立的ftp folderhostalias,但我想,以避免在某些節點上使用額外的服務器(參考:如果你正在尋找的服務器解決方案檢查sample config)。
  • 其次是寫作Application.serve(String filepath)動作+路由,但在提供文件之前我不需要任何其他操作。使用這種方法有意義嗎?

有其他選擇嗎?

(這個問題也可在Google Groups

+1

我可以問一些嘗試細節? CDN的部分有用性 - 至少在我看來 - 是你的請求不包含cookies,因爲它填補了不必要的帶寬。是您希望的解決方案的一部分,例如提供來自'www.example.com'的動態請求和來自'cdn.example.com'(或完全不同的TLD)的靜態請求(CDN)?另外,你的大多數請求是靜態的(CDN)還是動態的?也許你有一個大概的百分比。它也可以幫助您瞭解您的主要靜態數據集是否很小,例如90%的靜態請求最多隻有幾GB的數據。 – Carsten

+0

@Carsten,thx回覆。我想將大型媒體文件和其他「完全公開」的東西放在應用程序結構之外,因爲我不需要對它進行訪問控制。在這種情況下,應用程序保存路徑和元數據 - 以及corse渲染前端。我的目標可以通過使用前端http服務器和某些文件夾的別名(此處介紹)(http://stackoverflow.com/a/10884297/1066240)輕鬆演示,但我想避免使用HTTP服務器。另一方面,我認爲我也可以在端口80和一些輕量級服務器上部署應用程序來捕獲靜態請求(將更多...) – biesior

+0

@Caresten :((更多:))我剛剛意識到(感謝你)從其他域提供這些數據將阻止cookie發送,這也可以提高性能。 – biesior

回答

2

如果您的播放文件夾和FTP文件夾是在同一臺主機上,可以使用公共資產。來自documentation

請注意,如果您在「公開」之外定義資產映射,則需要告訴它,例如,如果你想:

GET /assets/*file    controllers.Assets.at("/public", file) 
GET /liabilities/*file   controllers.Assets.at("/foo", file) 

你應該project/Build.scala

​​

我沒有測試它添加這個項目設置,但它是值得:-)

+0

nico_ekito:thx爲您的答案,但不幸的是不能得到它的工作。我會盡力,如果有任何進展,會讓你知道。 – biesior

+5

這是否需要您自己的控制器,因爲資產控制器預先複製並編譯了所有資產,即開始播放時文件必須存在?如果稍後上傳文件,則不起作用。 – nylund