我有一个模块,它允许用户选择一个类别,然后用于过滤组件的输出。因此,当用户第一次单击菜单项时, View 会显示所有类别的项目,然后当他们单击模块时,会在 url 中添加一个参数,例如 &catid=69 等,用于过滤显示的项目。
系统插件通过注册额外的“catid”参数来补充行为,即
$registeredurlparams->catid = 'INT';
$app->set('registeredurlparams', $registeredurlparams);
该模块使用类别 ID 创建缓存 ID,并显示顶级类别 + 所选类别的子类别。
这适用于系统配置中启用的保守缓存和启用的系统缓存插件。
我担心的是 我无法让它与渐进式缓存一起使用 :即使组件输出被正确缓存,模块也不会更新(所以我从来没有看到子类别)。
最终我计划在 JED 上提供扩展,并且我希望与所有可能的缓存配置兼容。是否有可能强制渐进式缓存将我想要的参数添加到缓存ID?
不接受诸如发送完整类别树并使用 ajax 执行此操作等变通方法。
最佳答案
您可以查看的一件事是后端的 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() 的方式做一些事情。
关于caching - Joomla 渐进式缓存不处理具有可变输出的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21098539/