Flash から PHP が動的に吐き出す XML を読めない問題を調査する修行

Flash から XML ファイルを読んでいたところを、php を呼び出すように変更した。Firefox だと大丈夫だが、IE だと駄目だった。
php が吐き出したファイル自体は XML と同じものだし、Content-Type も等しい。
XML ファイルを取得したときの HTTP レスポンスヘッダと php を呼び出したときの HTTP レスポンスヘッダを見比べ、徐々に近づけていったところ、php が返すヘッダからキャッシュ関連ヘッダ Expires, Pragma, Cache-Control を削除するとうまく動作することがわかった。
キャッシュできない XML コンテンツを返されたときに Flash Player が正しく動作しなかったのだろう。インストールされている Flash Player のバージョンによっても動作が異なる可能性がある。

session_cache_limiter() 関数で private cache を許可するように設定したところ、正しく動くようになった。
この場合、キャッシュ関連ヘッダはなくなるわけではない。(PHP でレスポンスヘッダを削除することはできないのではないかと思っているが、実際どうなのだろう。)

PHP のデフォルト設定だと何でもかんでもキャッシュ不可にしているところを、ちゃんと考えてケアしなければ、ということだろうユーザの体感速度や帯域のためにも、キャッシュしていい情報は適度な期間、適切な場所にキャッシュさせるよう、設計すべき。

が、XML は交換用データフォーマットであり、常にフレッシュであることも多いだろうから、キャッシュするなと言われたからといって正しく処理できないのなら、Flash Player 側にも問題があるのではないだろうか。原因が確定していないので、即 Flash Player がおかしい、とも言えないが。