2016-07-01 42 views
1


我有一個TYPO3插件頁面,顯示「月末」。我在列表模塊中填充項目,開始/結束日期分別爲相應的月份。將TYPO3頁面緩存的生命週期設置爲一個確切的月份(而不是31天)

事情是我必須禁用緩存(或設置爲只有1天)或手動刷新它,或者仍然顯示上個月的提示。
我希望頁面被緩存,但緩存僅在每個月的第一天才有效。將背景頁面的生命週期設置爲「1個月」,實際上將壽命設置爲2678400秒(31天),這在短於31天的月份不起作用。還是已經有了一個功能,計算當前月份的實際長度!? (我不能等了整整一個月,以測試它。)

我知道有在Typo腳本cache.lifetime,但您只能設置(以秒爲量)的整數,「無限」(沒有到期直到被刷新),「默認」(如在config.cache_period中配置)或stdWrap

我知道最後創建的緩存日期時間是通過響應中的「Date」標題發送的。所以TYPO3應該知道這個時間戳。

所以,我需要這樣的東西:

<?php 
    $dateStart = new DateTime($pageLastCreated_whencever); 
    $dateEnd = new DateTime(); 
    $dateEnd->modify('first day of +1 month'); 
    $dateDiff = $dateStart->diff($dateEnd); 
    return $dateDiff->format('%s'); // equals cache lifetime 
?> 

可能有人把我推在正確的方向?
我很想避免使用用戶的功能,但...


在此先感謝。

回答

0

不時清除TYPO3中的緩存。

我建議使用config.cache_clearAtMidnight = 1,因此您確定您的更新顯示在每個月的第一天。然後,您可以使用調度任務在清除後立即重建緩存。

編輯

我查了一下通過文檔,你絕對可以做的是包裹在cache_clearAtMidnight,檢查是否the dayofmonth小於二一Typo腳本的條件。

這將是您的完整輸入您的頁面設置。不需要PHP。

[dayofmonth < 2] 
    config.cache_clearAtMidnight = 1 
[global] 
+0

感謝您的提示,但是如何才能真正實現緩存生命週期的自動化,直到下個月的第一個月?我不知道我的示例代碼是否會真正起作用(以及如何在TypoScript中執行此操作),或者我可以在哪裏獲取最後一頁創建的日期。 – Seika85

+0

我更新了答案。不要過多擔心生命。您的頁面被緩存,直到您清除它。 –

+0

讓我們來看一個例子:\t這是2016-07-31 23:59並且它變成了2016-08-01 00:00。只有條件有效並且您建議的配置已設置。但午夜結束了。這是不是意味着緩存在2016-08-02 00:00清除? – Seika85

0

正如您發現緩存時間以秒爲單位完成的。唯一的解決方案是使用自定義調度程序任務,根據您的需要清除緩存

+0

如何設置每個頁面的單獨緩存生存期,以及如何通過調度程序識別和解釋它們? – Seika85

+0

這個邏輯將是100%。創建一個帶有「頁面ID」和「生命週期」列的簡單表格,並檢查每個呼叫是否符合要求。如果完成,您可以調用緩存管理器並將其清除爲這些頁面。 –

+0

所以我還需要設置一種BackEnd模塊(管理工具)來實際填充和維護每個頁面的緩存生命週期。或者我將不得不編寫一個擴展頁面配置,以便能夠方便地設置它...... ---正如我所說我甚至不想使用用戶功能。現在我不得不寫一個完整的擴展。那麼我想我必須至少考慮它,如果一切都失敗...... – Seika85

相關問題