不带缓存的 TYPO3 插件

TYPO3 plugin without caching

我用 Extbase/Fluid 写了一个扩展,这个扩展有一个插件:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyVendor.' . $_EXTKEY,
    'Pi1',
    array(
        'MyController' => 'list'
    ),
    // non-cacheable actions
    array(
        'MyController' => 'list'
    )
);

但是在创建 link

<f:link.action arguments="{foo: 'bar'}">...</f:link.action>

结果url有一个cHash参数:

http://localhost/mypage/?tx_myext_pi1[foo]=bar&cHash=d1768a40d9370f7a8d327043da156a05

为什么?我把这个插件定义为 "do not cache" 所以应该没有 cHash 参数。

TYPO3 版本为 7.6.12。

要删除 cHash 参数,您可以使用 f:link ViewHelper 参数 noCacheHash:

<f:link.action arguments="{foo: 'bar'}" noCacheHash="true">...</f:link.action>

cHash 不仅仅用于您的插件。同样对于页面的其余部分(布局等),如果您有参数,TYPO3 总是设置一个 cHash。

如果您使用 RealURL,如果您映射了 url 中的所有参数,cHash 将消失。

cHash参数不是用来缓存你的内容,而是用来缓存url中的参数,所以跟动作本身是否缓存无关

如果您的操作已缓存,并且您在更改模板或代码时没有看到任何变化,则可能是您更改了操作的缓存设置,而 localconf 仍被缓存。在这种情况下,您必须在安装工具中清除系统缓存或卸载并安装您的扩展程序。

这里有一些误解,现有答案中的一些信息已经过时。

除了查看权威资源,例如TYPO3 变更日志或 Benni Mack 核心领导的博客文章,我建议查看适用于您的 TYPO3 版本的资源 - 有些事情已经改变:例如停用 cHash 的参数不再有效,并且自 v9.

资源:


我的建议:缓存所有内容,除非有充分的理由不这样做。此外,还有一些方法可以仅在必要时进行自动缓存刷新,例如查看新闻扩展:

News has a built-in mechanism that takes care of clearing the cache after manipulation of News records.

https://docs.typo3.org/p/georgringer/news/7.2/en-us/AdministratorManual/BestPractice/ClearCache/Index.html

以前需要通过页面 TSConfig 进行配置,以在编辑新闻记录后强制刷新。现在有更好的方法来做这些事情。使用最佳实践和最新信息。


引自问题:

I've written an extension with Extbase/Fluid and this extension has a plugin: // non-cacheable actions array( 'MyController' => 'list' ) ); But when creating a link <f:link.action arguments="{foo: 'bar'}">...</f:link.action> the resulting url has a cHash parameter: Why? I defined this plugin as "do not cache" so there should be no cHash parameter.

插件未缓存,但页面未缓存。您可以缓存页面,但将个别插件设为未缓存。 “页面缓存”从缓存中加载,插件随每个页面请求呈现(如果配置为未缓存)。

此外,过去可以使用 noCacheHash 停用 cHash,但这已被弃用并删除:

除此之外:不建议停用页面缓存,您可以使用路由配置“隐藏”cHash,请参阅上述资源。