错误的 TYPO3 页面缓存

Wrong TYPO3 Page Cache

这个问题偶尔会出现在访问量很大的页面上。 有时 TYPO3 会显示完全不同页面的内容(包括 HTML head Section)。

例如,如果用户调用以下页面:/products/(默认控制器 ProductControllerlistAction)TYPO3 显示随机控制器的内容和同一插件的操作在页面上(例如 ApplicationControllershowAction)。 该网站没有重定向到另一个页面,它只是显示了错误的内容!

我已经尝试过以下方法:

还有其他人遇到同样的问题吗?

规格:

尝试将插件定义为 USER_INT。 plugin.tx_yourextkey = USER_INT

这将告诉 TYPO3 为每个请求呈现代码。

最佳做法是为 showAction 设置第二个页面,并且仅在 single_view 页面上,将插件定义为 USER_INT。

但是如果你有两个页面,你应该不会遇到这个问题。不需要 USER_INT 设置。

这些缓存问题通常是由于错误或缺少 cHashes 而发生的。

您可以使用 $GLOBALS['TSFE']→reqCHash(); 在你的控制器的动作中。如果没有设置 cHash,这将禁用缓存,因此确保您不会得到不正确的缓存条目。 请注意:如果您在系统设置中设置 [pageNotFoundOnCHashError] = 1,则当在没有 cHash 的情况下调用页面时,您将收到页面未找到错误,如果将其设置为 0,页面仍将显示但不会缓存。


以下信息可能已过时,请参阅下面 moe2k 的回答以获取更多最新信息。

或者,有一个系统参数“[FE][cHashRequiredParameters]”——您可以在那里添加您的插件参数。如果没有给出 cHash 但设置了其中一个参数,则 TYPO3 会触发配置的 cHash 错误行为。 我相信 cHashes 会自动为拼写链接设置,不过您可以试试看。如果它们没有自动设置,您应该在指向 show 操作的链接上设置“useCacheHash = 1”。

我更喜欢并使用第一种变体。

从 TYPO3 v9 开始,使用以下内容:

$TYPO3_CONF_VARS['FE']['cacheHash']['requireCacheHashPresenceParameters']

使用数组作为值而不是

$TYPO3_CONF_VARS['FE']['cacheHash']['cHashRequiredParameters']

以逗号分隔的列表。