Firebugによると、リソースが最初に取得されたときの応答ヘッダーは次のとおりです。
Accept-Ranges bytes
Cache-Control public, max-age=86400
Content-Language en
Content-Length 232
Content-Location http://localhost/myapp/cacheTest.html
Content-Type text/html; charset=WINDOWS-1252
Date Wed, 05 Sep 2012 15:59:31 GMT
Last-Modified Tue, 01 May 2012 05:00:00 GMT
Server Restlet-Framework/2.0.3
Vary Accept-Charset, Accept-Encoding, Accept-Language, Accept
クリックして戻ってクリックすると、サーバーに送信されるリクエストヘッダーは次のとおりです。
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Host localhost
Referer http://localhost/myapp/cacheTest2.html
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20100101 Firefox/15.0
したがって、当然、サーバーは私が望むように304を送信できず、代わりにリソース全体を再度送信します。
これはFirefox14で発生していましたが、バグの可能性があると思ったので、アップグレードしました。しかし、それはFirefox15でもまだ起こっています。Chromeには問題はありません。
「Expires」ヘッダーがある場合とない場合の両方を試しましたが、違いはありません。Firefoxは、If-Modified-Sinceヘッダーの送信を拒否するだけです。