2010/12/01

Plone Folder

Plone 3 和 Plone 4 目錄的實作方式不同,前者分成「一般目錄」和「大型目錄」兩種目錄型別,後者則是只實作一種型別,將兩種型別的特色整併。

一般目錄 (Folder) 最適合存放 50 個項目之內的場合,在內容操作介面裡,使用者可以手動拖拉,調整項目的順序。缺點在於,存取目錄物件時,是使用 Python 的 pickle 指令,會將整個目錄資料載入記憶體,目錄裡的項目過多時,容易造成效能變差。同時,目錄裡的項目值是以 tuple 型別來指定,存取過程都是整批處理,容易造成 ZODB 的衝突錯誤。

大型目錄 (Large Folder) 則是適合存放大量項目的場合,內部以 B-tree 實作,對於記憶體和硬碟的衝擊較小,同時也能針對局部資料進行鎖定,不易造成 ZODB 的衝突錯誤。它的缺點則是沒有提供調整項目順序的介面,而且要額外到 portal_types 設定,才能把項目內容顯示在資訊方框。

Plone 4 重新實作一個 plone.folder 型別,混合上述的優點,不再分成兩種目錄型別。

透過 Plone 3 網站 ZMI 的 portal_types 工具,可以詳細觀察 Large Folder 的屬性值,特別留意 Implicitly addable 的設定值,勾選後就可以在 Plone 3 的前台介面新增,例如 Members、news、events 目錄,都是使用 Large Folder 型別。

No comments: