plone.scale注释膨胀(无用?)尺度

时间:2013-10-29 14:50:51

标签: performance plone zodb

在调查ConflictErrorsee this previous question)时,我发现了很多persistent.mapping.PersistentMapping次冲突。

查看特定的一个,结果证明是plone.scale的PersistentMapping。

原来只有一个图像的随机对象上有 562 个键,难怪为什么会出现冲突错误......

包含此plone.scale注释的对象的某些上下文: - 灵巧内容类型 - 其中一个行为有一个图像字段(plone.namedfile.field.NamedBlobImage

要查看的代码如下:

启动调试实例:./bin/instance debug

from ZODB.utils import p64
OID = 0x568428  # got from zeo client logs
mapping = app._p_jar[p64(OID)]
len(mapping)  # that returns 562

神秘的部分是,持久映射上只有4个键是元组,而其他558只是哈希。

简要介绍一下plone.scale.storage.AnnotationStorage.scale方法似乎意味着在持久映射上只有一对一的关系来自元组和哈希键。

进一步研究这些元素后发现,实际上,如果从所有元素中查看widthheight属性,则只有4种不同的组合(来自元组本身的组合)。

每当修改时间更大时(参见上面提到的比例方法)生成新的比例,plone.namedfield.scaling.ImageScaling.modified使用上下文作为修改的源,这意味着在对象的每次更新时都会出现新的比例会产生吗?

因此,前两个问题出现了:

  • 我的假设只有4个刻度才真正使用而其他558是旧的无用是真的吗?

  • 对前一个提供了肯定,那么它们不应该被清理掉吗?

1 个答案:

答案 0 :(得分:3)

您可能是对的,但报告此内容的正确位置肯定是https://dev.plone.org/newticket