2012-01-26 72 views
1

由于某些缓存问题,如果存在特定的URL参数,我需要明确地绕过缓存,针对特定模块。我在已经来到的解决方法是破解render()功能libraries/joomla/document/html/renderer/module.php,沿着线:Joomla:有没有模块渲染插件事件?

function render($module, $params = array(), $content = null) 
{ 
    // Existing code: 
    $mod_params = new JParameter($module->params); 

    // My hack: 
    if ($module->module == 'mod_foo') 
    { 
     if (certain URL parameters are present) 
     { 
      $mod_params->set('cache', 0); 
     } 
    } 
    ... 
} 

当然,黑客核心的Joomla代码是一个可怕的想法,一个我想避免,如果这尽可能。那么,为了达到同样的目的,是否有适当的挂钩可以插入?我不认为我可以在模块级别做任何事情,因为如果渲染器已经决定从缓存中获取它,它甚至不会被检查。

回答

0

要回答第一个问题没有没有一个模块呈现事件,这里的the plugin doc's and the list of events in Joomla!

关闭缓存为模块。

查看The Art Of Joomla,其他文章这篇文章你可以看看:

  1. Using Cache to Speed Up your code

  2. JCache API

+0

不幸的是,这不是当前的选项。关闭模块的缓存可以在重负载的情况下杀死站点。这并不奇怪,因为当前的配置使用了大量的数据库查询:主页大约为300。当然,开启缓存功能可以减少这种情况(尽管仍然远远没有达到合理的水平),并且让网站在紧张情况下呼吸。 –

+0

只关闭你的模块关闭缓存杀死该网站? – Craig

+0

* *模块,请不要*我的*模块;-)是的,该网站只能处理一定数量的流量(就像*任何*网站)和〜300 DB查询vs〜150查询(或任何确切的不同之处在于 - 这确实很大)足以应对当前的流量。当然,随着流量的增加,我要么需要继续优化网站/代码(看起来好像还有很长的路要走......),或者投入更多的硬件。缓存一些最恶劣的模块是这个过程的第一步。 –