我正在开发CMS,我希望用户能够上传自己的图片,CSS文件等。为了安全起见,我不希望将上传的文件存储在应用程序结构/部署的WAR中。
从非Grails位置的控制器提供grails内容的最简单方法是什么?
答案 0 :(得分:1)
通过适当的工具提供静态内容是正确的方法,所有的Web服务器都提供了实现这一目标的可能性。如果您想在Grails应用程序中实现对此内容的管理,请在Config.groovy中配置静态内容的目标,以及所有内容。
不要通过控制器实现从文件系统加载内容,你正在重新发明轮子;-)而且Web服务器的性能要高得多; - )
答案 1 :(得分:1)
经过大量研究和质疑,我决定将静态资源(如图像)打包到数据库中。这样做的好处是:
缺点是:
我决定采用这个解决方案,即使有这些缺点。这就是我处理它们的方式:
我正在使用智能浏览器缓存,使用etags(documentation)并使用EHCache(documentation)来缓存图像服务器端。上传新图像后,将更改电子标签,并清除缓存,强制浏览器下载新的副本。
到目前为止,MySQL数据库的性能损失并不明显,性能也很快。
答案 2 :(得分:1)
我会添加一个指向远程文件系统文件夹的上下文别名,如cdavis226在其帖子中所解释的那样:
http://grails.1312388.n4.nabble.com/How-to-configure-context-xml-aliases-for-Tomcat-7-td4632149.html
如果您使用的是Grails默认的Tomcat服务器,则此解决方案可用。