Typo3 9 - 清除页面 ID 的缓存

Typo3 9 - clear cache for a page id

对于 Typo3 8,以下方法有效:

$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->clear_cacheCmd($pid);

在 Typo3 9 中使用它会导致此错误:

Call to a member function getTSConfig() on null
in E:\wwwroot_T9LTS\typo3\sysext\core\Classes\DataHandling\DataHandler.php line 8971

在 Typo3 9 中清除页面 ID 缓存的最佳方法是什么?

更新
使用 CacheManager 让它工作:

$cacheManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\Cache\CacheManager::class);
$cacheManager->flushCachesInGroupByTags('pages', [ 'pageId_'.$pid ]);

您必须通过调用 start() 方法来初始化 class:

$tce = GeneralUtility::makeInstance(\TYPO3\CMS\Core\DataHandling\DataHandler::class);
$tce->start([], []);
$tce->clear_cacheCmd($pid);

详情见documentation

您可能 运行 在未登录后端时使用 DataHandler 清除缓存时遇到问题。在 Extbase 上下文中,您可以使用:

$cacheManager = $this->objectManager->get(\TYPO3\CMS\Extbase\Service\CacheService::class);
$cacheManager->clearPageCache([1,2,3]);