[英]Wrong TYPO3 Page Cache
此问题偶尔会出现在有大量访问者的页面上。 有时 TYPO3 会显示完全不同页面的内容(包括 HTML 标题部分)。
例如,如果用户调用以下页面: /products/
(带有listAction
默认控制器ProductController
) TYPO3 显示随机控制器的内容和页面上相同插件的操作(如带有showAction
ApplicationController
)。 该站点不会重定向到另一个页面,它只是显示了错误的内容!
我已经尝试了以下事情:
nonCacheableControllerActions
(问题再次发生在一天后)?no_cache=1
(问题解决,但页面速度降低)有没有其他人有同样的问题?
规格:
7.6.22
2.2.1
这些缓存问题通常是由于 cHash 错误或丢失而发生的。
您可以使用$GLOBALS['TSFE']→reqCHash();
在您的控制器的操作中。 如果未设置 cHash,这将禁用缓存,因此确保您不会获得不正确的缓存条目。 请注意:如果您在系统设置中设置 [pageNotFoundOnCHashError] = 1,当在没有 cHash 的情况下调用页面时,您将收到页面未找到错误,如果设置为 0,页面仍将显示但不会缓存。
以下信息可能已过时,请参阅下面的 moe2k 回答以获取更多最新信息。
或者,有一个系统参数“[FE][cHashRequiredParameters]” - 您可以在那里添加您的插件参数。 如果没有给出 cHash 但设置了其中一个参数,则 TYPO3 会触发配置的 cHash 错误行为。 我相信 cHashes 然后会自动设置为拼写链接,您可以尝试看看。 如果它们不是自动设置的,您应该在指向 show 操作的链接上设置“useCacheHash = 1”。
我更喜欢 & 使用第一个变体。
尝试将插件定义为 USER_INT。 plugin.tx_yourextkey = USER_INT
这将告诉 TYPO3 为每个请求呈现代码。
最佳实践是 showAction 的第二个页面,并且仅在 single_view 页面上,将插件定义为 USER_INT。
但是如果你有两个页面,你应该不会遇到这个问题。 并且不需要 USER_INT 设置。
从 TYPO3 v9 开始,请使用以下内容:
$TYPO3_CONF_VARS['FE']['cacheHash']['requireCacheHashPresenceParameters']
使用数组作为值而不是
$TYPO3_CONF_VARS['FE']['cacheHash']['cHashRequiredParameters']
用逗号分隔的列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.