【发布时间】:2014-02-01 15:02:37
【问题描述】:
我有一个模块允许用户选择一个类别,然后用于过滤组件的输出。因此,当用户第一次点击菜单项时,视图会显示所有类别的项目,然后当他们点击模块时,会在 url 中添加一个参数,例如 &catid=69 等,用于过滤显示的项目。
系统插件通过注册额外的“catid”参数来补充行为,即
$registeredurlparams->catid = 'INT';
$app->set('registeredurlparams', $registeredurlparams);
模块使用类别 id 创建缓存 id,并显示顶级类别 + 所选类别的子类别。
这适用于在系统配置中启用保守缓存和启用系统缓存插件。
我担心的是我无法让它与渐进式缓存一起使用:即使组件输出被正确缓存,模块也没有得到更新(所以我从来没有看到子类别)。
最终我计划在 JED 上提供该扩展,并且我希望与所有可能的缓存配置兼容。是否有可能强制渐进式缓存将我想要的参数添加到缓存ID?
不接受诸如发送完整类别树并使用 ajax 进行处理等变通方法。
【问题讨论】:
-
用户是否登录?在这两种情况下(保守派和进步派)。
-
未登录,我认为 Joomla 缓存在用户登录时被设计禁用。
-
是的,这就是我问的原因。我想你已经看过这个了:global module caching 但我还是把它贴出来以防万一。
-
是的,我读过它,它只是指出,渐进式缓存不考虑单个模块缓存。但是由于渐进式缓存允许在同一个 Itemid 上输出不同版本的组件,我希望可以将相同的行为扩展到没有核心黑客的模块
-
你有哪个版本的Joomla?这听起来像我的错误。您提到该模块的代码处理缓存 ID 的创建,如果您可以在其中添加用户 ID 以及类别 + 子类别?