在Plone 3中存储大文件的最佳方法是什么?

pup*_*eno 6 plone

我想在Plone网站上提供很多大文件.大文件我的意思是大约5MB(音乐)和很多.我已经直接去了ZODB,不是一个好主意.我正在运行Plone 3.1.1和Zope 2.10.6.

Rei*_*ees 9

Zodb blob支持是处理大文件的最佳,最集成的方式.大文件透明地存储在filesytem而不是zodb对象数据库中.在这种情况下,"透明地"意味着在初始配置后您将不会在实际编程工作中注意到它.

blob功能已被移植到当前(2008年中途)的zope版本,可以在plone 3中使用.在项目中使用plone.app.blob:http://plone.org/products/plone.app.blob.


lim*_*imi 7

是的,此时你不应该使用除ZODB BLOB支持以外的任何东西.它适用于3.x系列版本.

票证#6805中的更多信息

- Plone联合创始人Alexander Limi


Eri*_*erg 1

您可能已经知道,长期解决方案应该是 ZODB BLOB 支持。Ticket 6805可能是这方面最权威的来源。不幸的是,里程碑设置为 4.0,在旧版本的生产中运行它可能不是一个好的解决方案。

历史上,存在许多用于外部存储文件的 Plone 产品,仅将元数据保存在 ZODB 中。我已经尝试了其中的几种,根据我的经验,没有一种能够与当前的 Plone/Zope 版本配合良好。不过,请不要相信我,去年左右我还没有尝试过任何此类产品。

就我个人而言,我会寻求一种尽可能简单且不涉及 Plone 的解决方案。将音乐文件存储在磁盘上,直接从 apache/您使用的任何 Web 服务器提供服务,仅在 Plone 中保留元数据 - 在您自己编写的产品中,将为您提供具有良好性能的强大解决方案。也就是说,您的产品应该生成指向 Web 服务器上可用音乐文件的路径的链接。

如果您需要授权下载音乐文件,并假设您在 Zope 之前运行 lighthttpd 或 apache,那么基于 X-sendfile 的解决方案可能是最佳选择。使用 X-sendfile,您可以将文件保存在磁盘上,并在应将音乐文件发送到客户端浏览器时向响应添加标头 (X-sendfile)。Web 服务器将拾取此标头并将文件发送到客户端,而无需涉及 Plone。

一些提示: