2014-12-03 24 views
0

我有一些複雜的菜單需要(幾乎)從字面上永遠渲染。管理TYPO3中某些元素的緩存?

我使用nc_staticfilecache,但對於編輯者和登錄用戶來說,能夠在每次頁面加載時都不能重新呈現這些菜單將是非常好的。

我已經想過在特殊的doktype上渲染菜單,用cron作業獲取渲染的菜單,並將它存儲到數據庫或文件中,然後可以在模板中使用它。

另一方面,這種情況下是否存在一種方法?

回答

1

緩存框架可以處理這個問題。有一個屬性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