有没有办法在具有可缓存和不可缓存的 extbase 操作的页面上使用 PageRenderer 方法?

Is there a way to use PageRenderer methods on a page with cachable and non-cachable extbase actions?

如果页面包含两个 Extbase 插件,一个插件调用可缓存操作,另一个调用不可缓存操作,PageRenderer 方法调用以添加 CSS 和 JavaScript 文件不起作用。没有错误消息,但文件未添加到 HTML 标记。

我尝试将 PageRenderer 方法调用置于控制器方法 initializeActioninitializeViewlistAction 中。没什么区别。

如果两个插件的操作都是可缓存或不可缓存的,则 PageRenderer 方法调用按预期工作。

如果我将可缓存操作设为不可缓存,反之亦然,PageRenderer 方法调用也不起作用。哪个动作可缓存或不可缓存并不重要。

我尝试对 Fluid 模板中的 HeaderAssets 和 FooterAssets 部分使用现代方式。这里有同样的问题:如果同时调用可缓存和不可缓存的操作,则不会呈现这些部分。

/* @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
$pageRenderer = $this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class);
$pageRenderer->addCssFile('my.css');
$pageRenderer->addJsFooterFile('my.js');

我知道缓存和 PageRenderer(USER 和 USER_INT 对象)存在问题。但是我不明白为什么 PageRenderer 方法调用在可缓存和不可缓存的操作中都失败,如果它们仅适用于可缓存或不可缓存的操作。这是应该的行为吗?如何使 PageRenderer 方法调用起作用?

通过 PageRenderer 添加 CSS 或 JavaScript 文件在具有 non-cachable 操作的 extbase 插件中根本不起作用。或者至少不可靠。 non-cachable 操作的渲染输出只会在带有 link 和脚本标签的页面的 HTML 标记完全渲染后添加到页面模板。因此无法添加额外的 CSS 和 JavaScript 文件。 (通过 TypoScript 添加文件是可行的方法。)