我是Django的新手,我正在尝试在OpenShift上部署一个小型的业余爱好项目。我知道有些约定建议不要让Django提供静态和媒体文件,因为它效率低下。我还注意到,当DEBUG
关闭时,Django拒绝提供媒体文件。这就是为什么我正在寻找更好的方式来提供这些内容。
Django的文档认为像Amazon S3这样的CDN是静态服务的最佳方式之一,但作为业余爱好者,我现在宁愿坚持使用免费增值解决方案。我发现MongoDB--我不太常用的另一项技术 - 提供GridFS作为存储后端。我可以通过MongoLab获得免费的MongoDB存储空间,所以这对我来说很有意思。
这样的建筑会在实践中运作还是这种疯狂的谈话?如果这是可行的,我需要对我的OpenShift环境和Django设置进行哪些更改才能让GridFS提供静态内容?我见过人们使用CloudFlare's free CDN来提供静态内容的替代设置,但后来我无法从本地开发环境上传/访问媒体文件。
答案 0 :(得分:0)
长话短说:这是一个坏主意。
原因如下:为了提供静态文件,您首先需要处理请求,从GridFS获取数据,这实际上将文件分散为255k块,这些块必须被收集(取决于大小,当然)只有这样才能归还。
我倾向于使用varnish来缓存应用程序所服务的静态文件,无论是django还是Servlet容器。这样的工作方式如下:
总而言之:这样,从您的应用程序中获取负载,减少延迟,快速交付资源,无需任何编程工作即可轻松设置。
编辑:对于OpenShift环境:只需保持原样。从MongoDB提供静态文件根本没有意义。