[英]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.