将TYPO3页面缓存生命周期设置为确切的月份(而不是31天)

时间:2016-07-01 13:26:13

标签: caching typo3 typoscript typo3-6.2.x


我有一个带有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
?>

有人能把我推向正确的方向吗? 我希望避免使用用户功能,但是......


提前谢谢。

2 个答案:

答案 0 :(得分:0)

不时清除TYPO3中的缓存并不会造成伤害。

我建议您使用config.cache_clearAtMidnight = 1,以确保您的更新在每个月的第一天显示。然后,您可以使用计划任务在清除后立即重建缓存。

修改

我查看了一些文档,你可以肯定的是将cache_clearAtMidnight包含在一个typoscript条件中,检查the dayofmonth是否小于2。

这将是您的页面设置的完整标题。不需要PHP。

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

答案 1 :(得分:0)

正如您所知,缓存时间是在几秒钟内完成的。唯一的解决方案是使用自定义调度程序任务,根据您的需要清除缓存