在视图上应用plone.app.caching操作';Plone中的HTTP响应

在视图上应用plone.app.caching操作';Plone中的HTTP响应,plone,Plone,我有一个为AJAX返回JSON负载的自定义视图: class DataSource(grok.CodeView): """ Generate JSON array needed to populate the fields """ grok.context(ISiteRoot) grok.name("dgftreeselect-test-data") def render(self): self.request.response.

我有一个为AJAX返回JSON负载的自定义视图:

class DataSource(grok.CodeView):
    """
    Generate JSON array needed to populate the fields
    """
    grok.context(ISiteRoot)
    grok.name("dgftreeselect-test-data")

    def render(self):
        self.request.response.setHeader("Content-type", "application/json")
        return json.dumps(SAMPLE_DATA)
我想在生成的HTTP响应上应用plone.app.caching的moderateCaching操作

用Python表达我的意图的最短、最漂亮的方式是什么


如果更简单的话。。。然后直接说“在浏览器/前端代理中缓存24小时”

您希望在ZCML中执行此操作,例如

  <cache:rulesetType
      name="my.package.DataSource"
      title="My data source view"
      description="Contains data stuff"
      />

  <cache:ruleset
    ruleset="my.package.DataSource"
    for=".browser.DataSource"
    />

然后使用Plone UI或registry.xml导入将my.package.DataSource映射到所需的操作(例如,适度缓存)


有关如何定义规则集并将视图映射到规则集的信息,请参见;了解如何管理Plone的规则集。

我尝试在portal_设置下导出缓存策略,但结果是一个空文件:-这里有任何示例说明如何使用GenericSetup XML将操作映射到数据源吗?我看到了相同的示例。我想知道导出是否只在您仍在使用CacheSetup时起作用。相反,您应该导出plone.app.registry设置(“在portal_设置中导出配置注册表模式”),并在那里查找plone.app.caching设置。您要查找的主要是operationMapping字段。请注意,您不需要定义自己的rulesetType。如果默认的plone.app.caching规则集类型对您来说足够好,那么您可以在Martin的答案中的cache:ruleset中指定例如ruleset plone.content.itemView。