加快Plone中getObjPositionInParent索引的速度
项目描述
Plone的 getObjPositionInParent 目录索引针对快速写入和排序 小 的结果集进行了优化,这些结果集无论如何都会在请求中加载。实际的顺序根本不会存储在目录中,而只存储在父对象上。这意味着排序结果集只能通过加载父对象并从中获取对象位置来实现。
这对于Plone的标准用例(如导航小部件或门户选项卡)效果很好,但进行大量查询且深度较大时非常慢,因为必须唤醒所有容器对象。
此包的目标是用一个实际索引替换 getObjPositionInParent,该索引将顺序存储在目录中的常规 FieldIndex 中。
兼容性
Plone 4.3.x Plone 5.1.x
安装
将包添加到您的buildout配置
[instance] eggs += ... ftw.gopip
安装通用的设置配置文件 ftw.gopip:default。
实现
此包用 FieldIndex 替换了 GopipIndex,这是一个假索引,不存储任何数据。
挑战是保持索引的准确更新。这是通过定制标准的 IOrdering 适配器并在其中跟踪更改来实现的,这样我们就不需要依赖其他组件在正确的时间触发事件。
三个标准的 IOrdering 适配器都通过跟踪代理包装
DefaultOrdering(提供 IExplicitOrdering)
PartialOrdering(提供 IExplicitOrdering)
UnorderedOrdering(提供 IOrdering)
如果存在自定义的 IOrdering 或 IExplicitOrdering 适配器,它们必须相应地进行跟踪。
Plone 网站根目录没有 IOrdering 适配器。一个 IReorderedEvent-订阅者负责跟踪第一级重排序。
开发
从该仓库分叉
克隆你的分叉
Shell: ln -s development.cfg buildout.cfg
Shell: python boostrap.py
Shell: bin/buildout
Shell: bin/test 以测试你的更改。
或者运行 bin/instance fg 来启动一个实例。
链接
版权
本软件包版权属于 4teamwork.
ftw.gopip 采用 GNU 通用公共许可证,版本 2。
项目详情
ftw.gopip-1.1.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49a14c346efcf146a66e29656520940341573c17534751379f230fdd7a0c8d3a |
|
MD5 | 858719ed440996c9c594c2738629fa74 |
|
BLAKE2b-256 | 8ba172111d2a3c5c6c24a1db5642ea7109b779095df32e33abf2363aed070c24 |