0
我有一些複雜的菜單需要(幾乎)從字面上永遠渲染。管理TYPO3中某些元素的緩存?
我使用nc_staticfilecache
,但對於編輯者和登錄用戶來說,能夠在每次頁面加載時都不能重新呈現這些菜單將是非常好的。
我已經想過在特殊的doktype上渲染菜單,用cron作業獲取渲染的菜單,並將它存儲到數據庫或文件中,然後可以在模板中使用它。
另一方面,這種情況下是否存在一種方法?
我有一些複雜的菜單需要(幾乎)從字面上永遠渲染。管理TYPO3中某些元素的緩存?
我使用nc_staticfilecache
,但對於編輯者和登錄用戶來說,能夠在每次頁面加載時都不能重新呈現這些菜單將是非常好的。
我已經想過在特殊的doktype上渲染菜單,用cron作業獲取渲染的菜單,並將它存儲到數據庫或文件中,然後可以在模板中使用它。
另一方面,這種情況下是否存在一種方法?
緩存框架可以處理這個問題。有一個屬性stdWrap.cache
正是這種Typoscript緩存。真棒!
下面是德國的一篇文章,從我的使用情況出發,準確(megamenus) http://www.typo3.net/beitraege/typo3-cache-befehl/
我在這裏複製了海報的代碼,簡化了一點,並翻譯註釋:
/**
* @author Oliver Thiele
*/
lib.megaNavigation = COA
lib.megaNavigation {
wrap = <ul class="nav navbar-nav">|</ul>
/**
* Doesn't need to be cached, not slow
*/
10 = TEXT
10.value (
<li class="dropdown">
<a data-toggle="dropdown" href="#">Links</a>
<ul class="dropdown-menu">
<li><a href="http://extern.example.com">Externer Link</a></li>
</ul>
</li>
)
/**
* Shouldn't be cached, highlighting is needed
*/
20 = HMENU
20 {
// ... Normale Menügenerierung
special = directory
special.value = 1
1 = TMENU
1 {
NO.wrapItemAndSub = <li>|<li>
# …
}
}
/**
* That's the slow part we want to be cached
*/
30 = COA
30 {
stdWrap {
cache {
/**
* Use language as key to identify different localisations
*/
key = meganavigation_contact_{TSFE:sys_language_uid}
key.insertData = 1
// tag can be used for later clearing
tags = main_navigation, tx_slowextension
/**
* must be seen in context of page caching
*/
lifetime = 3600
}
}
# This would be the menu - could also be nested hmenus with content etc!
20 < plugin.tx_slowextension_pi1
/**
* For testing: Timestamp
*/
30 = TEXT
30 {
data = date: d.m.y H:i:s
wrap = <li>|</li>
}
}
}
該文檔在http://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Cache/Index.html