游戏框架中的大型资产2.1

时间:2013-04-30 17:30:20

标签: javascript playframework playframework-2.0 assets

我有一个庞大的数据目录(~30GB),其中包含我想在Play应用程序中提供的文件。当我将目录放在公共文件夹中时,应用程序将不会完成编译,只会挂起编译

我已经尝试过类似的事情:

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

并在Build.scala文件中

// Add your own project settings here
playAssetsDirectories <+= baseDirectory / "foo"

但是,我得到了与上述相同的问题。

我也试过ExternalAssets

正在提供的一些文件在javascript中使用,因此我无法将它们放在单独的本地ftp服务器上,否则javascript会抱怨。

想法?

2 个答案:

答案 0 :(得分:4)

实际上你不需要(在你的情况下你可以看到)你甚至不应该将资产放在apps目录中,而是考虑两种可能性:

  1. Frontend HTTP server,对于示例nginx,light and fast将允许您创建反向代理和/或aliases,因此您可以直接从地址内的磁盘提供文件{ {1}} - 在这种情况下,您需要手动编写路径而不是使用http://domain.tld/public。实际上,使用这种方法,您还可以提供常见资产,例如布局的CSS,图像等。
  2. 使用一些专业的CDN或云存储,无论如何,在这种情况下,您需要稍微重建脚本。

答案 1 :(得分:0)

我找到了一个快速而肮脏的解决方案。在设置简单的http网络服务器(例如python simple webserver)时,您需要启用cross origin resource sharing,这将允许javascript访问来自不同域的文件。

CORS内置于多个Web服务器中,但不是pythons。我找到了一个可以为python执行此操作的脚本。 See here

干杯