小能豆

plone 中一个文件的副本数是否与修订次数一样多?

py

在 plone 中,如果文件 (或任何内容) 被修改了 4 次,那么会存在多少个物理副本?我使用的是 plone 4.1,其中文件和图像存储在文件系统中。


阅读 14

收藏
2024-11-19

共1个答案

小能豆

在 Plone 4.1 中,内容(包括文件和图像)的版本管理依赖于 Zope Object Database (ZODB),而文件和图像的数据存储在文件系统中通常通过 Blob Storage 进行管理。这里需要明确以下两个方面:


1. 版本历史与逻辑副本

Plone 使用 历史版本 (History) 来记录内容的更改。每次对文件或内容进行修改,Plone 会创建一个新的版本记录,这些版本是逻辑副本,并存储在 ZODB 中。

如果文件被修改 4 次:
- 将存在 5 个逻辑版本(1 个原始版本 + 4 个修改版本)。
- 这些版本是基于事务快照存储的,并不代表完全独立的物理副本。


2. Blob Storage 与物理副本

对于文件和图像,Plone 使用 Blob Storage 将二进制数据存储在文件系统中。当修改文件时,Blob Storage 通常会为每个新版本创建一个独立的物理副本:

  • 修改后物理副本数量:对于文件或图像,每次修改都会创建一个新的 Blob 文件,因此如果文件被修改 4 次,将有 5 个物理副本(原始版本 + 4 个修改版本)。
  • 存储机制:Blob Storage 会在文件系统中为每个版本分配一个唯一的路径和名称,这些文件独立存储并与 ZODB 的元数据记录关联。

影响物理副本数量的因素

  • 文件未被修改:如果对文件进行的修改仅影响元数据(例如标题或描述),Blob 文件不会被复制。
  • 存储策略:某些定制或插件可能优化 Blob 存储,减少重复数据的存储(例如通过增量存储或哈希比较)。
  • 清理策略:如果启用了历史记录清理(例如通过 plone.app.versioningbehavior 或手动清理旧版本),旧版本的 Blob 文件可能被删除。

总结

在 Plone 4.1 中,如果一个文件被修改 4 次:
- 将存在 5 个逻辑版本
- Blob Storage 中将存在 5 个物理副本(假设每次修改都更改了文件内容)。
- 如果仅更改元数据(而非文件内容本身),则物理副本数量可能少于 5 个。

可以通过检查文件系统中 Blob 文件的位置(通常位于 var/blobstorage 文件夹)来验证实际的物理副本数量。

2024-11-19