簡體   English   中英

錯誤的 TYPO3 頁面緩存

[英]Wrong TYPO3 Page Cache

此問題偶爾會出現在有大量訪問者的頁面上。 有時 TYPO3 會顯示完全不同頁面的內容(包括 HTML 標題部分)。

例如,如果用戶調用以下頁面: /products/ (帶有listAction默認控制器ProductController ) TYPO3 顯示隨機控制器的內容和頁面上相同插件的操作(如帶有showAction ApplicationController )。 該站點不會重定向到另一個頁面,它只是顯示了錯誤的內容!

我已經嘗試了以下事情:

  • 我將 Controller + action 添加到nonCacheableControllerActions (問題再次發生在一天后)
  • 在URL中添加?no_cache=1 (問題解決,但頁面速度降低)
  • 清除緩存(問題解決,不管清除什么緩存。但問題又出現了一天)
  • 我寫了一個腳本,每隔幾分鍾調用一次頁面,這似乎解決了這個問題。

有沒有其他人有同樣的問題?

規格:

  • TYPO3 版本: 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM