放置缓存清除代码的位置

时间:2011-08-03 08:42:14

标签: zend-framework zend-cache

我现在正在组建一个基于ZF的CMS,目前正在缓存我的Zend_Navigation对象,以及renderMenu()呈现的html。所以目前,每当菜单发生变化时,我都必须在相关动作中调用以下几行:

        $cache = Zend_Registry::get("cache");
        $cache->remove("menu");
        $frontcache = Zend_Registry::get("frontcache");
        $frontcache->remove("menuhtml");

我有一个siteController来处理菜单结构的更改,还有一个pageController来处理各个页面的添加/编辑/删除,因此代码用于这两个控制器中的操作。

我显然希望将此代码放在我可以调用的单个方法中,但哪里是最合适的位置?行动助手? siteController的一个父类&的PageController?我应该组合控制器吗?或其他什么?

2 个答案:

答案 0 :(得分:2)

您是否考虑过使用动作助手(http://framework.zend.com/manual/en/zend.controller.actionhelpers.html)?这将为您提供一个独立于您的控制器的位置,每个控制器仍然可以调用它。

答案 1 :(得分:1)

服务怎么样?存储在Application_Service_Navigation中的appnamespace(或您正在使用的application/services/Navigation.php),实现了表示这两个CMS控制器中的CRUD操作的接口。然后在内部,这些方法可以使用您所描述的缓存。控制器调用服务方法,并且不知道缓存操作。