在plone中对视图的HTTP响应应用plone.app.caching操作

时间:2012-09-17 22:30:16

标签: 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.setHeader("Content-type", "application/json")
        return json.dumps(SAMPLE_DATA)

我想对生成的HTTP响应应用plone.app.caching的 moderateCaching 操作。

用Python表达我的意图的最短和最美的方式是什么?

如果它更简单......那就直接说“在浏览器/前端代理中缓存24小时”。

1 个答案:

答案 0 :(得分:2)

您希望在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映射到您想要的操作(例如,适度缓存)。

有关如何为其定义规则集和地图视图,请参阅http://pypi.python.org/pypi/z3c.caching/2.0a1; http://pypi.python.org/pypi/plone.app.caching了解如何管理Plone的规则集。