2012-01-31 14 views
4

iCal(Mac OS Xの内蔵カレンダープログラム)が以前に持っていたイベントの更新を反映しないことを除けば、RFC 5545に準拠してPHPで動的に生成されたiCalendarフィードを作成しました。既にダウンロードされています。私はこれがキャッシュのためだと仮定しています。 iCalにフィードをキャッシュしないように指示する方法はありますか?iCalがPHPで生成されたiCalendarフィードをキャッシュするのを止めることはできますか?

EDIT:ああ、私はすでにVEVENTにフィードが呼び出されるたびに別のUIDを作成しようとしたことを忘れていました(私のUIDフォーマットは "id"、RFC 5545のDATE -TIME形式で、私のデータベース内のイベントの一意のIDです)。私もヘッダーのContent-typeで試してみました。この問題は、テキスト/プレーンまたはテキスト/カレンダーに設定するかどうかに関係なく発生します。

+2

私は完全なばかだとの質問に編集した直後に気付きました。データベースのイベントに変更を加えたとき、DTSTAMPをCURRENT_TIMESTAMPにリセットするのを忘れました。 iCalが更新していないのはこのためです。みんなありがとう! –

答えて

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 
?> 
2

"no-cache"ヘッダーを追加しようとしましたか?

<?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'); 
?> 
関連する問題