5

我使用 PHP 制作了一个动态生成的 iCalendar 提要,遵循 RFC 5545。它在大多数情况下工作得很好,除了 iCal(即 Mac OS X 的内置日历程序)似乎拒绝反映之前已经下载的事件的更新. 我假设这是由于缓存。有没有办法告诉 iCal 不要缓存我的提要?

编辑:哦,是的,我忘了提到每次调用提要时我已经尝试让每个 VEVENT 都有不同的 UID(我的 UID 格式是“id”,RFC 5545 的 DATE-TIME 格式的当前时间在哪里,并且是我数据库中事件的唯一 ID)。我也尝试过在标题中使用 Content-type;无论我将其设置为 text/plain 还是 text/calendar,都会出现此问题

4

2 回答 2

2

我从未处理过 iCal,但尝试设置标题以强制重新验证。

<?php
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
于 2012-01-31T22:56:24.987 回答
2

您是否尝试过添加“无缓存”标头?

<?php
header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); //date in the past
header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); //tell it we just updated
header( 'Cache-Control: no-store, no-cache, must-revalidate' ); //force revaidation
header( 'Cache-Control: post-check=0, pre-check=0', false );
header( 'Pragma: no-cache' ); 
?>
于 2012-01-31T22:57:36.050 回答