Playframework:quot;播放开始“缓存问题?

Playframework:quot;播放开始“缓存问题?,playframework,playframework-2.0,Playframework,Playframework 2.0,我目前正在使用play framework 2开发一个web应用程序。我已经在/public目录下创建了一个文件夹“files”。当我使用“play run”启动服务器时,可以访问该目录下的所有资源 在部署到服务器之后。我通过运行“play start”启动了服务器,发现“files”下的资源已经找不到了 我想知道是什么原因导致了“播放开始”和“播放运行”之间的不一致 更新:经过几次试用。我发现是新上传的资源无法显示。情况如下: 1. play start --> server start

我目前正在使用play framework 2开发一个web应用程序。我已经在/public目录下创建了一个文件夹“files”。当我使用“play run”启动服务器时,可以访问该目录下的所有资源

在部署到服务器之后。我通过运行“play start”启动了服务器,发现“files”下的资源已经找不到了

我想知道是什么原因导致了“播放开始”和“播放运行”之间的不一致

更新:经过几次试用。我发现是新上传的资源无法显示。情况如下:

1. play start --> server starts.
2. use application to upload a few images to the server.
3. try to display the uploaded image --> nothing is shown. browser shows the resource is not accessible.
4. kill the server process with task manager.
5. rm RUNNING_PID
6. run play start again 
7. Try to display the uploaded image --> now the images are showing.
所以,看起来像是“播放开始”的“热更新”问题 是否有任何配置可以让服务器接收更改?
谢谢。

您将图像存储在哪里? 在编译时,静态资产从
/public
复制到
/target/scala-2.9.1/classes/public
。该目录是类路径的一部分,从那里提供资产。所以,如果您在运行时将文件存储在那里,应该可以找到它们


旁注:这可能不是一个可持续的解决方案,因为用户加载的图像在下一次构建过程中会被删除。也许你应该考虑在你的应用程序安装之外使用一个符号链接(注意!安全问题!)或者将资产存储在其他地方,数据库或S3永远是很好的替代品。

< P>基于Joerg Viola的回答。我决定实现自己的操作来服务静态资源。事实证明这非常简单。从年开始,我学会了在一行中实现文件服务器。

已经在您的本地
play start
中测试过了吗?如果有堆栈跟踪,请添加到您的帖子。否,我无法在本地计算机上运行“play start”,因为我在将图像放在/public/files目录下时描述了一个错误。那么,您是说当用户在url中放置路径/assets/files/xxx.jpg时,服务器将查找/target/scala-2.9.1/classes/public/files来查找此文件?如果是这样的话,我可以在用户上传时在两个地方创建我的图像。但是为什么playframework是这样设计的呢?提供静态资源不是常见的场景之一吗?@wei-ma:当然是,但是静态资源并不意味着在运行时改变。。。因此,可以在编译时编译,也可以选择gzip。正如我所建议的:将上传的文件放在磁盘上的其他地方,编写自己的简单控制器,根据请求提供此文件。我想我太习惯IIS的行为方式了。默认情况下,IIS按原样提供静态内容,无缓存,无压缩。我想知道我是否可以配置play来执行同样的操作。我相信实现一个简单的控制器不会太难,但是框架不应该让我选择不具有这些额外的功能吗?我将把你的答案标记为接受的答案。但我也在下面介绍了我最终如何解决这个问题。