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查詢(或任何確切的不同之處在於 - 這確實很大)足以應對當前的流量。當然,隨着流量的增加,我要麼需要繼續優化網站/代碼(看起來好像還有很長的路要走......),或者投入更多的硬件。緩存一些最惡劣的模塊是這個過程的第一步。 –