如何在 TYPO3 中通过 id 刷新或更新页面缓存
How to flush or update cache for page by id in TYPO3
我需要从我的控制器的扩展中的 TYPO3 版本 8 后端刷新特定页面的缓存。我找到了刷新所有缓存的解决方案,但这是最后一个选项。
GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class)
->flushCachesInGroupByTags('pages', [ 'pageId_'.$id ]);
核心使用DataHandler处理页面缓存清除;
参见:\TYPO3\CMS\Recordlist\RecordList::clearCache
/**
* Clears page cache for the given page id, $this->id
*/
public function clearCache(int $pageId)
{
$tce = GeneralUtility::makeInstance(DataHandler::class);
$tce->start([], []);
$tce->clear_cacheCmd($pageId);
}
抱歉,我无法直接评论本杰明的回答。
DataHandler 的第二种解决方案仅适用于后端上下文。如果您想从前端插件中清除缓存,则必须使用标记的答案。
从控制器上下文中(根据要求..)
$this->cacheService->clearPageCache([$pageIds]);
此调用包含上面标记的答案。
我需要从我的控制器的扩展中的 TYPO3 版本 8 后端刷新特定页面的缓存。我找到了刷新所有缓存的解决方案,但这是最后一个选项。
GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class)
->flushCachesInGroupByTags('pages', [ 'pageId_'.$id ]);
核心使用DataHandler处理页面缓存清除;
参见:\TYPO3\CMS\Recordlist\RecordList::clearCache
/**
* Clears page cache for the given page id, $this->id
*/
public function clearCache(int $pageId)
{
$tce = GeneralUtility::makeInstance(DataHandler::class);
$tce->start([], []);
$tce->clear_cacheCmd($pageId);
}
抱歉,我无法直接评论本杰明的回答。 DataHandler 的第二种解决方案仅适用于后端上下文。如果您想从前端插件中清除缓存,则必须使用标记的答案。
从控制器上下文中(根据要求..)
$this->cacheService->clearPageCache([$pageIds]);
此调用包含上面标记的答案。