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代码是一个可怕的想法,一个我想避免,如果这尽可能。那么,为了达到同样的目的,是否有适当的挂钩可以插入?我不认为我可以在模块级别做任何事情,因为如果渲染器已经决定从缓存中获取它,它甚至不会被检查。
不幸的是,这不是当前的选项。关闭模块的缓存可以在重负载的情况下杀死站点。这并不奇怪,因为当前的配置使用了大量的数据库查询:主页大约为300。当然,开启缓存功能可以减少这种情况(尽管仍然远远没有达到合理的水平),并且让网站在紧张情况下呼吸。 –
只关闭你的模块关闭缓存杀死该网站? – Craig
* *模块,请不要*我的*模块;-)是的,该网站只能处理一定数量的流量(就像*任何*网站)和〜300 DB查询vs〜150查询(或任何确切的不同之处在于 - 这确实很大)足以应对当前的流量。当然,随着流量的增加,我要么需要继续优化网站/代码(看起来好像还有很长的路要走......),或者投入更多的硬件。缓存一些最恶劣的模块是这个过程的第一步。 –