在Plone 3中存储大文件的最佳方法是什么?
我想在Plone网站上提供许多大文件。大文件的意思是大约5MB(音乐),其中有很多。我已经直接对ZODB执行了此操作,这不是一个好主意。我正在运行Plone 3.1.1和Zope 2.10.6.
解决方案
回答
我们可能已经知道,对此的长期解决方案应该是ZODB BLOB支持。票证6805可能是最权威的信息。不幸的是,该里程碑设置为4.0,并且在较旧版本的生产环境中运行它可能不是一个好的解决方案。
从历史上看,有很多Plone产品用于外部存储文件,仅将元数据保留在ZODB中。我已经尝试了其中的几个,并且根据我的经验,没有一个可以与当前的Plone / Zope版本一起使用。但是,请不要相信我,过去一年左右,我还没有尝试过任何这种类型的产品。
就我个人而言,我会寻求一种尽可能简单的解决方案,并且只在必要时才涉及Plone。将音乐文件存储在磁盘上,从我们使用的apache /任何Web服务器直接提供音乐文件,仅将元数据保留在我们自己编写的产品中的Plone中,将为我们提供性能良好的强大解决方案。也就是说,产品应该在Web服务器上生成指向可访问音乐文件的路径的链接。
如果我们需要下载音乐文件的授权,并且假设我们在Zope的前面运行lighthttpd或者apache,那么基于X-sendfile的解决方案可能是最好的选择。使用X-sendfile,我们可以将文件保留在磁盘上,并在将音乐文件发送到客户端浏览器时在响应中添加标头(X-sendfile)。 Web服务器将选择此标头并将文件发送到客户端,而无需使用Plone。
一些指针:
- http://tn123.ath.cx/mod_xsendfile/(Apache模块)
- http://john.guen.in/past/2007/4/17/send_files_faster_with_xsendfile/(Ruby示例)
回答
Zodb Blob支持是处理大型文件的最佳,最集成的方法。大文件透明地存储在文件系统上,而不是zodb对象数据库中。在这种情况下,"透明"意味着我们在初始配置后的实际编程工作中不会注意到它。
Blob功能已回迁到当前(2008年中半年)的zope版本,可以在plone 3中使用。为此,请在项目中使用plone.app.blob:http://plone.org/products/plone.app.blob。
回答
是的,除了ZODB BLOB支持之外,我们不应该使用其他任何东西。它与3.x系列发行版一起正常工作。
机票中的更多信息#6805
Plone联合创始人Alexander Limi
回答
我在一些流量较低的网站上安装了plone.app.blob,并且可以在同一实例中为我繁忙的生产网站安装(如果需要,可以滚动)。
这是4.0的里程碑,但是我肯定会在3.4倍左右进行回顾(并可能在我的生产站点上单击plone.app.blob的安装按钮)。
一些参考:
http://n2.nabble.com/PLIPs-I%27d-love-to-see-for-Plone-3.3-tp1123218p1130015.html
http://dev.plone.org/plone/ticket/8629#comment:2突出显示
…?3.4, when we'll probably have blob filestorage specification support added to plone.recipe.zeoserver and zope2instance. That will give us a standard location for whatever owner/permission fixups the installers need to make.
在上下文中:我正在粗略地使用plone.app.blob和基于标准和实验安装程序的Plone版本3.1.7和3.2a1的其他添加产品混合在一起。在这些环境中,如果没有我用小孩子的手套来对待事情,Plone sies的表现就会非常好,并且(如预期的那样)实验导致一些奇怪的事情时,社区的支持就会变得适当而适当。
回答
据我所知,澄清:
- plone.app.blob来自PLIP(克隆改进提案)中的各种候选技术,是获得广泛支持的主要竞争者-对于特殊的用例,有时我们会发现除BLOB之外的其他建议
- 当前,4.0是plone.app.blob成为Plone核心产品的最可能的里程碑
- 同时,plone.app.blob是当前3.x版本的Plone的推荐添加产品-用于建议使用类似BLOB技术的用例。