[TYPO3-dev] Clearing the cache of a single instance of a page	(single view) instead of the whole page
    Steffen Müller 
    typo3 at t3node.com
       
    Fri Oct 16 13:58:21 CEST 2009
    
    
  
Hi.
On 15.10.2009 11:42 Ernesto Baschny [cron IT] wrote:
> 
> in the new caching framework (starting with 4.3), tt_news could "tag"
> his single views with certain key e.g. (tt_news:<uid>) and then hook
> into the processdatamap of TCEmain to delete these cache entries when a
> tt_news record is modified.
> 
I just read through the classes t3lib_TCEmain and tslib_fe and the
caching framework interface. This is the result of my exploration:
1) When using the caching framework, tslib_fe also supports reg1. The
reg1 value (integer) is used as a tag of the cache entry.
For example this can be used by
$GLOBALS['TSFE']->page_cache_reg1 = $this->piVars['tt_news']; // Example
GETvar: &tx_ttnews[tt_news]=123
Without caching framework:
field reg1=123 in table cache_pages
With caching framework:
cache entry has tag: reg1_123
This preserves backward compatibility.
2) When using the caching framework, tslib_fe allows to add tags to
$this->pageCacheTags by using $this->addCacheTags(array $tags)
That means one can use
$GLOBALS['TSFE']->addCacheTags(array('tx_ttnews_' .
$this->piVars['tt_news']); // Example GETvar: &tx_ttnews[tt_news]=123
The result is an additional tag in the cache entry: tx_ttnews_123
3) The t3lib_TCEmain API does not (yet) support clearing cache entries
by tag. But it could be enhanced with a function clear_cache_by_tags()
public function clear_cache_by_tags(array $tags=array()) {
  if (TYPO3_UseCachingFramework) {
    $pageCache = $GLOBALS['typo3CacheManager']->getCache(
      'cache_pages'
    );
    $pageSectionCache = $GLOBALS['typo3CacheManager']->getCache(
      'cache_pagesection'
    );
    $pageCache->flushByTags($tags);
    $pageSectionCache->flushByTags($tags);
    }
  }
}
4) Hooking into processdatamap could then call clear_cache_by_tags() to
flush the appropriate cache entries.
What do you think?
-- 
cheers,
Steffen
TYPO3 Blog: http://www.t3node.com/
Blubber on Twitter: http://twitter.com/t3node
    
    
More information about the TYPO3-dev
mailing list