2014-01-13 55 views
12

我有一個模塊,它允許用戶選擇一個類別,然後用它來過濾組件的輸出。所以當用戶第一次點擊菜單項時,視圖會顯示來自所有類別的項目,然後當他們點擊模塊時,一個參數(如& catid = 69等)被添加到URL中並用於過濾顯示的項目。Joomla漸進式緩存不處理可變輸出模塊

甲系統插件通過註冊額外「CATID」補充了行爲PARAM即

$registeredurlparams->catid = 'INT'; 
$app->set('registeredurlparams', $registeredurlparams); 

該模塊使用類別ID來創建緩存的id,並且示出了頂層類別+的子類別選擇的類別。

在系統配置啓用保守緩存並啓用系統緩存插件的情況下,此工作正常。

我的問題是,我不能讓它與漸進式緩存一起工作:即使組件輸出被正確緩存,模塊也不會被更新(所以我從來沒有看到子類)。

最終,我打算在JED上提供擴展,並且希望與所有可能的緩存配置兼容。有沒有可能強制漸進式緩存將我想要的參數添加到緩存ID?

變通辦法,例如發送完整的分類樹並使用ajax進行處理將不被接受。

+0

用戶是否登錄?在這兩種情況下(保守和漸進)。 – ilias

+0

沒有登錄,我認爲當用戶登錄時Joomla緩存設計被禁用。 –

+0

是的,這就是爲什麼我問。我想你已經看過這個:[全局模塊緩存](http://www.inmotionhosting.com/support/edu/joomla-25/caching/global-module-caching),但我無論如何發佈它以防萬一。 – ilias

回答

0

你可以看到的一件事是後端的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'); 
} 

我一直認爲這是一個大錘/雜牌,因爲它不會讓網站管理員控制是否要做到這一點,但你可以做一起構成一個自定義cleanCache東西線()爲你的模型。

+1

謝謝@Elin,但我的模塊正在改變基於用戶的輸出交互,過濾器設置等,不僅是底層結構的變化(爲此我已經發布了適當的cleanCache())。我是LittleHelper軟件包的開發人員,它具有乾淨的緩存功能,但這完全破壞了我的目的:在這一點上,更容易強制緩存關閉,因爲它不會有清理緩存的開銷... –

+0

我認爲這是這個案子的最好主意。 – Elin