如何在播放生产模式下访问新创建的静态文件?

时间:2013-04-30 04:25:49

标签: playframework playframework-2.0

我在生产模式下使用start命令运行服务器时进行了一些实验,如果在公共路径下生成了新的静态文件,则客户端无法访问这些新的静态文件(404错误)。但是使用run,可以访问这些静态文件。

所以我的问题是:是否有一些配置使我能够使用生产模式,而我可以访问新创建的静态文件?

2 个答案:

答案 0 :(得分:3)

如果您可以使用最适合的frontend HTTP server

在这种情况下,play clean-all之后的示例不会删除您的文件,因为您可以将它们存储在应用程序之外,同时注意您可以优化服务这些文件,添加缓存标头,使用{{最后,您可以添加/编辑/删除文件,而无需重新部署应用程序。

每次,当我使用前端服务器(这意味着总是)时,我将所有公共资产从Play的文件夹移动到HTTP控制域,并相信我这很舒服。

答案 1 :(得分:2)

我只是尝试放置任何文本文件(例如dynamic.file.txt)(这是使用Play 2.1.1完成的)

  

path-to-project/target/scala-2.10/classes/public/dynamic.file.txt

当应用程序开始使用play start命令时。这就是发生的事情,我可以在URL http://yourdomain/assets/dynamic.file.txt访问新添加的文件。

我认为,框架会编译public目录中的所有内容。然后,当您处于开发模式时,您的文件将自动编译到target目录。因此,当应用程序处于生产模式时(使用play start命令),可以强制将新创建的文件(或动态文件一个)放在target/scala-xxx/classes/public/*文件夹中

你可以尝试一下,朋友! ;)


<强>更新

需要注意的是,使用此 hacky 技术存在缺点。如果执行了play cleanplay clean-all命令,则target/*文件和文件夹上的所有文件将被删除。所以,请注意!