safari はリクエスト ヘッダーを返信していません。私はそれを実現するのにずっと時間がかかったのを恥じています(しばらくしてから304を送り返しましたが、今までそのサファリの問題に気づいていませんでした)
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) or isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) echo $_SERVER['HTTP_IF_NONE_MATCH']."<br/>";
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) echo $_SERVER['HTTP_IF_MODIFIED_SINCE']."<br/>";
}
else {
header("Content-Type: text/html");
header("Last-Modified:Fri, 13 Dec 2001 20:45:54 GMT");
header("Etag".md5_file(__FILE__));
header("Expires:Fri, 13 Dec 2001 20:45:54 GMT") ;
header("Pragma: private");
header("Cache-Control:must-revalidate");
echo 'refresh to view last modified/etag headers sent back by browser<br/>;
}
Firefox が話し、Chrome が話し、Explorer が話す。
サファリはだめです。
このhttp://use.perl.org/~bart/journal/36598を読むと、最後に変更されたヘッダーで Safari に送信された日付の形式に問題があることがわかります。そうである場合、上記で使用されている形式の何が問題になっていますか?
テストと役に立たない検索に 3 時間を費やしました。サファリのキャッシュサポートの提供をあきらめる前に、developper.apple Webサイトを閲覧しています...おそらく内部設定、http形式の日付のコピーペーストの間違い、ヘッダーの欠落...
ご協力いただきありがとうございます
編集: 上記のテスト スクリプトを更新するときにサファリによって送信される http ヘッダーであり、サファリの開発者ツール (リソース) からコピーされます。
Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Cache-Control:max-age=0
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5