繁体   English   中英

没有缓存的 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'
    )
);

但是在创建链接时

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

结果 url 有一个 cHash 参数:

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

为什么? 我将此插件定义为“不缓存”,因此不应该有 cHash 参数。

TYPO3 版本是 7.6.12。

cHash参数不是用来缓存内容的,而是用来缓存url中的参数的,因此它与缓存的动作本身无关。

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

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

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

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

如果您使用RealURL,并且已将所有参数映射到url中,则cHash将消失。

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

另外,你想达到什么目的? 为什么要在插件中停用缓存(不推荐)以及为什么要摆脱 cHash(不再可能 - 除非通过路由增强器)。

除了查看权威资源,例如 TYPO3 更改日志或 Benni Mack 核心负责人的博客文章,我强烈建议您查看适用于您的 TYPO3 版本的资源 - 有些事情已经改变:例如停用 cHash 的参数不再起作用,而您有自 v9 起,TYPO3 中路由的更多可能性。

我建议阅读:


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

News 有一个内置机制,负责在处理 News 记录后清除缓存。

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

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


引用问题:

我用 Extbase/Fluid 编写了一个扩展,这个扩展有一个插件: // non-cacheable actions array( 'MyController' => 'list' ) ); 但是在创建链接时 <f:link.action arguments="{foo: 'bar'}">...</f:link.action> 生成的 url 有一个 cHash 参数:为什么? 我将此插件定义为“不缓存”,因此不应该有 cHash 参数。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM