不带缓存的 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.
资源:
- Benni Mack(核心领导)/ b13:Caching in TYPO3—Part 2: The Mysteries of cHash unraveled—Cache Variants of a Page
- 另请参阅文章中链接的第 1 部分和第 3 部分
- TYPO3 changelogs
- 官方文档"TYPO3 Explained": Caching Framework and Caching Architecture
我的建议:缓存所有内容,除非有充分的理由不这样做。此外,还有一些方法可以仅在必要时进行自动缓存刷新,例如查看新闻扩展:
News has a built-in mechanism that takes care of clearing the cache after manipulation of News records.
以前需要通过页面 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,但这已被弃用并删除:
- Deprecation: #88406 - setCacheHash/noCacheHash options in ViewHelpers and UriBuilder
- Breaking: #91473 - Deprecated functionality removed
除此之外:不建议停用页面缓存,您可以使用路由配置“隐藏”cHash,请参阅上述资源。
我用 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.
资源:
- Benni Mack(核心领导)/ b13:Caching in TYPO3—Part 2: The Mysteries of cHash unraveled—Cache Variants of a Page
- 另请参阅文章中链接的第 1 部分和第 3 部分
- TYPO3 changelogs
- 官方文档"TYPO3 Explained": Caching Framework and Caching Architecture
我的建议:缓存所有内容,除非有充分的理由不这样做。此外,还有一些方法可以仅在必要时进行自动缓存刷新,例如查看新闻扩展:
News has a built-in mechanism that takes care of clearing the cache after manipulation of News records.
以前需要通过页面 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,但这已被弃用并删除:
- Deprecation: #88406 - setCacheHash/noCacheHash options in ViewHelpers and UriBuilder
- Breaking: #91473 - Deprecated functionality removed
除此之外:不建议停用页面缓存,您可以使用路由配置“隐藏”cHash,请参阅上述资源。