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

标签 caching joomla

我有一个模块,它允许用户选择一个类别,然后用于过滤组件的输出。因此,当用户第一次单击菜单项时, 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/

相关文章:

html - Mozilla Firefox 浏览器不加载样式表

c# - StringBuilder 是否在调用 ToString() 时缓存结果字符串?

c# - Null 作为 HttpRuntime.Cache.Add 中的值

caching - CacheServiceEmulator.exe > 3GB RAM 使用量?

php - 虚拟市场查询

php - 在使用 PHP 7.0.6 的 Wampserver 3.0.4 上安装 Joomla 3.5.1 时出错

postgresql - 如何查询PostgreSQL真实数据库,而不是其缓存?

php - 网页生成(类似 CMS)

jquery - Slimbox - 叠加在图像前面

html - 如何在同一行上放置 3 个 div?