PHPで動的コンテンツを生成しています。
次の HTTP ヘッダーを送信しています。
HTTP/1.1 304 Not Modified
Date: Sun, 09 Dec 2012 17:24:41 GMT
Server: Apache
Connection: keep-alive, Keep-Alive
Keep-Alive: timeout=1, max=100
Etag: "237f43b800e655dbe6567f7d32d34c99"
Expires: Sun, 16 Dec 2012 17:24:41 GMT
Cache-Control: max-age=604800
Vary: Accept-Encoding
後で、Etag がheader('HTTP/1.1 304 Not Modified')
一致するかどうかを確認して送信します。これは、Chrome と Firefox で完全に機能します。ただし、Safari (バージョン 6.0.2) は「If-Modified-Since」および「If-None-Match」ヘッダーを送信しません。これは、2 番目のページ ヒットで Safari から送信された Request-Header です。
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cache-Control: max-age=0
そのページにリンクされている他のすべてのファイルは適切な Request-Headers を受け取り、Safari はキャッシュされたファイルまたは 304 を適切に使用します。
Safari に正しい Request-Header を送信しないのはなぜですか? 何を変更できますか?
ありがとうございました!