[英]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 记录后清除缓存。
过去需要通过 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.