Joomla渐进式缓存不处理具有可变输出的模块

时间:2014-01-13 18:21:46

标签: caching joomla

我有一个模块,允许用户选择一个类别,然后用于过滤组件的输出。因此,当用户首次点击菜单项时,视图会显示所有类别中的项目,然后当他们点击模块时,会将诸如& catid = 69等的参数添加到网址并用于过滤显示的项目

系统插件通过注册额外的'catid'参数来补充行为,即

$registeredurlparams->catid = 'INT';
$app->set('registeredurlparams', $registeredurlparams); 

模块使用类别ID来创建缓存ID,并显示顶级类别+所选类别的子类别。

这在系统配置中启用了保守缓存并启用了系统缓存插件时效果很好。

我担心的是我无法使用渐进式缓存:即使组件输出正确缓存,模块也不会更新(因此我从未看到子类别)。 / p>

最终我计划在JED上提供扩展,并且我希望与所有可能的缓存配置兼容。是否有可能强制渐进式缓存将我想要的参数添加到缓存ID?

不会接受诸如发送完整类别树和使用ajax进行操作的变通方法。

1 个答案:

答案 0 :(得分:0)

您可以看到的一件事是后端的ContentModelArticle。你会注意到cleanCache() 强行清除可能受保存或创建影响的内容模块。

protected function cleanCache($group = null, $client_id = 0)
{
    parent::cleanCache('com_content');
    parent::cleanCache('mod_articles_archive');
    parent::cleanCache('mod_articles_categories');
    parent::cleanCache('mod_articles_category');
    parent::cleanCache('mod_articles_latest');
    parent::cleanCache('mod_articles_news');
    parent::cleanCache('mod_articles_popular');
}

我一直认为这是一个大锤/ kludge,因为它不会让网站管理员控制是否这样做,但你可以为你的模型制作一个自定义的cleanCache()。