我有一个带有TYPO3插件的页面,显示了该月的"提示"。我填写了列表模块中的项目,其中包含相应月份的开始/结束日期。
问题是我必须禁用缓存(或将其设置为仅1天)或手动冲洗,或者仍显示上个月的提示。
我想要缓存页面,但缓存只能在每月1日之前有效。在后台将页面生命周期设置为" 1个月",实际上设置的生命周期为2678400秒(31天),这在短于31天的月份内不起作用。或者它背后是否有功能,计算当月的实际长度!? (我不能等一整个月来测试它。)
我知道TypoScript中有cache.lifetime
,但您只能设置整数(以秒为单位的数量)," 无限&# 34; (直到刷新后才会过期)," 默认" (在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 :(得分:0)
不时清除TYPO3中的缓存并不会造成伤害。
我建议您使用config.cache_clearAtMidnight = 1
,以确保您的更新在每个月的第一天显示。然后,您可以使用计划任务在清除后立即重建缓存。
修改强>
我查看了一些文档,你可以肯定的是将cache_clearAtMidnight
包含在一个typoscript条件中,检查the dayofmonth是否小于2。
这将是您的页面设置的完整标题。不需要PHP。
[dayofmonth < 2]
config.cache_clearAtMidnight = 1
[global]
答案 1 :(得分:0)
正如您所知,缓存时间是在几秒钟内完成的。唯一的解决方案是使用自定义调度程序任务,根据您的需要清除缓存