我想在 Plone 站点中提供大量大文件。我所说的大文件是指大约 5MB(音乐)和很多文件。我已经直接对 ZODB 进行了操作,这不是一个好主意。我正在运行 Plone 3.1.1 和 Zope 2.10.6。
5 回答
Zodb blob 支持是处理大文件的最佳、最集成的方式。大文件透明地存储在文件系统中,而不是 zodb 对象数据库中。在这种情况下,“透明”意味着您在初始配置后的实际编程工作中不会注意到它。
blob 功能已被向后移植到当前(2008 年中)zope 版本,可以在 plone 3 中使用。为此,请在您的项目中使用 plone.app.blob:http: //plone.org/products/plone.app.blob。
澄清,据我所知:
来自 PLIP(Plone 改进提案)中的各种候选技术,plone.app.blob 是获得广泛支持的主要竞争者
-- 对于特殊的用例,我们有时会发现推荐的 BLOB 以外的东西
4.0 目前是 plone.app.blob 成为 Plone 核心产品的最有可能的里程碑
同时 plone.app.blob 是当前 3.x 版本的 Plone 的推荐附加产品
-- 用于建议类 BLOB 技术的用例。
您可能已经知道,对此的长期解决方案应该是 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。
一些指示:
我在一些低流量站点上安装了 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,我们可能会在 plone.recipe.zeoserver 和 zope2instance 中添加 blob 文件存储规范支持。这将为我们提供安装人员需要进行的任何所有者/权限修复的标准位置。
在上下文中:我正在粗略地使用 plone.app.blob 和一个非常混合的其他附加产品,这些附加产品具有基于标准和实验性安装程序的 Plone 版本 3.1.7 和 3.2a1。在这些环境中,如果我不带孩子手套处理事情,Plone sies 表现得非常好,当(如预期的那样)实验导致奇怪时,来自社区的支持是有节奏的和适当的。