【发布时间】:2012-05-28 16:28:34
【问题描述】:
各位玩家
我需要为小型应用程序创建类似 CDN 的自定义解决方案,并想知道直接使用 Play 提供文件但不放在应用程序的 public 目录下的最佳方式是什么?我需要访问 FTP-upload 文件夹。
假设我的应用程序从/home/myaccount/playapps/app201 文件夹运行,并且在http://somedomain.tld 地址可用。我还有一个普通的 FTP 帐户,其文件夹指向 /home/myaccount/ftp_upload。
提供文件/home/myaccount/ftp_upload/folder_1/sub_2/file.txt 的最佳方式是什么
http://somedomain.tld/ftp_upload/folder_1/sub_2/file.txt(没有任何检查和限制)?
- 一种选择是使用 HTTP 服务器并为
ftp folder设置单独的host或alias,但我想避免在某些节点上使用额外的服务器(ref: 如果您正在寻找服务器解决方案,请查看sample config)。 - 第二个是写
Application.serve(String filepath)action + route,但在提供文件之前我不需要任何额外的操作。使用这种方法有意义吗?
还有其他选择吗?
(这个问题也可以在Google Groups获得)
【问题讨论】:
-
我可以问一些细节吗? CDN 的部分用处——至少在我看来——是您的请求不包含 cookie,因为它会占用不必要的带宽。这是您想要的解决方案的一部分,例如服务来自
www.example.com的动态请求和来自cdn.example.com(或完全不同的顶级域名)的静态请求(CDN)?此外,您的大多数请求是静态的 (CDN) 还是动态的?也许你有一个粗略的百分比。它还有助于了解您的主要静态数据集是否很小,例如 90% 的静态请求最多为几 GB 的数据。 -
@Carsten,谢谢回复。我想将大型媒体文件和其他
fully public东西放在应用程序结构之外,因为我不需要对其进行访问控制。在这种情况下,应用程序包含路径和元数据 - 并且是前端渲染。我的目标可以很容易地通过使用前端 http 服务器和某个文件夹的别名来证明 [在此处描述](stackoverflow.com/a/10884297/1066240),但我想避免使用 HTTP 服务器。另一方面,我认为我也可以在端口 80 和一些轻量级服务器上部署应用程序来捕获静态请求。(将更多...) -
@Caresten: (...more :)) 我刚刚意识到(感谢您)从其他域提供这些数据会阻止 cookie 发送,这也是提高性能的好点。
标签: playframework cdn playframework-2.0