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