[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