使用ZODB临时存储

时间:2015-06-19 17:46:49

标签: plone zope zodb

plone.recipe.zope2instance中有一个名为zodb-temporary-storage的选项,用于替换Zope的默认临时存储定义。

这是什么时候推荐的?有什么好处和缺点?

1 个答案:

答案 0 :(得分:5)

默认情况下,配方包含temporary storage service来存储会话数据:

  

临时文件夹是Zope文件夹,用于临时存储对象。临时文件夹的行为几乎与常规文件夹完全相同,但有两个显着差异:

     
      
  • 重新启动Zope时,临时文件夹中包含的所有内容都会消失。 (临时文件夹的内容存储在RAM中)。
  •   
  • 您无法撤消对存储在临时文件夹中的对象执行的操作。
  •   

这对于高度易变的会话数据非常有用,但是如果您在群集中运行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(通过collective.beaker可能是更好的选择。

更好的是,使用Products.BeakerSessionDataManager将默认的Zope会话管理器换成Beaker支持的会话管理器。