ZODB临时存储的使用
Usage of ZODB temporary storage
在plone.recipe.zope2instance中有一个名为zodb-temporary-storage
的选项,用于替换Zope的默认临时存储定义。
什么时候推荐的?优点和缺点是什么?
默认情况下,配方包含 temporary storage service 来存储会话数据:
Temporary Folders are Zope folders that are used for storing objects temporarily. Temporary Folders acts almost exactly like a regular Folder with two significant differences:
- Everything contained in a Temporary Folder disappears when you restart Zope. (A Temporary Folder’s contents are stored in RAM).
- You cannot undo actions taken to objects stored a Temporary Folder.
这对于高度易变的会话数据非常有用,但是如果您是 运行 集群中的 Zope,您可能希望将存储换成在集群中共享数据的东西。
使用的默认配置是:
<zodb_db temporary>
# Temporary storage database (for sessions)
<temporarystorage>
name temporary storage for sessioning
</temporarystorage>
mount-point /temp_folder
container-class Products.TemporaryFolder.TemporaryContainer
</zodb_db>
对应默认值session management setup for Zope。
我一直避免使用 Zope 的会话,因为它们很容易成为瓶颈(临时存储上的冲突负载),而是选择将所有内容存储在 cookie 中。如果您确实需要服务器端会话存储,使用 Beaker (via collective.beaker
可能是更好的选择。
更好的是,使用 Products.BeakerSessionDataManager
将默认的 Zope 会话管理器替换为 Beaker 支持的会话管理器。
在plone.recipe.zope2instance中有一个名为zodb-temporary-storage
的选项,用于替换Zope的默认临时存储定义。
什么时候推荐的?优点和缺点是什么?
默认情况下,配方包含 temporary storage service 来存储会话数据:
Temporary Folders are Zope folders that are used for storing objects temporarily. Temporary Folders acts almost exactly like a regular Folder with two significant differences:
- Everything contained in a Temporary Folder disappears when you restart Zope. (A Temporary Folder’s contents are stored in RAM).
- You cannot undo actions taken to objects stored a Temporary Folder.
这对于高度易变的会话数据非常有用,但是如果您是 运行 集群中的 Zope,您可能希望将存储换成在集群中共享数据的东西。
使用的默认配置是:
<zodb_db temporary>
# Temporary storage database (for sessions)
<temporarystorage>
name temporary storage for sessioning
</temporarystorage>
mount-point /temp_folder
container-class Products.TemporaryFolder.TemporaryContainer
</zodb_db>
对应默认值session management setup for Zope。
我一直避免使用 Zope 的会话,因为它们很容易成为瓶颈(临时存储上的冲突负载),而是选择将所有内容存储在 cookie 中。如果您确实需要服务器端会话存储,使用 Beaker (via collective.beaker
可能是更好的选择。
更好的是,使用 Products.BeakerSessionDataManager
将默认的 Zope 会话管理器替换为 Beaker 支持的会话管理器。