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

Ric*_*orn 12 joomla caching

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

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

$registeredurlparams->catid = 'INT';
$app->set('registeredurlparams', $registeredurlparams); 
Run Code Online (Sandbox Code Playgroud)

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

这可以在系统配置中启用保守缓存和启用系统缓存插件时正常工作.

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

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

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

Eli*_*lin 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');
}
Run Code Online (Sandbox Code Playgroud)

我一直认为这是一个大锤/拼凑,因为它不允许网站管理员控制是否执行此操作,但您可以按照为您的模型制作自定义 cleanCache() 的方式做一些事情。