JavaScriptを使って画像を動的に読み込んでキャンバスに描画するアプリがあります。イメージは変更できますが、キャッシングを活用したいので、イメージが変更されていない場合は、最後に変更されたhttpヘッダーを使用して、304応答を送信しています。それはうまくいっていて、うまくいっているようです...ブラウザに画像のhttpリクエストを送信させます
しかし、奇妙なことが起こっています(これまでのところ、OSXのChromeとSafariでのみテストされています)。画像!スクリプトでは、私はnew Image()
を作成し、onload
は機能しますが、ネットワークインスペクタを使用すると、要求は行われません。私はまた、リクエストが受信されなかったことをサーバ側で確認することもできます。それが最後に変更されたヘッダーを持っているので、
Connection:keep-alive
Content-Length:25937
Content-Type:image/png
ETag:Thu, 10 May 2012 20:48:13 GMT
Last-Modified:Thu, 10 May 2012 20:48:13 GMT
は、ブラウザが新しいリクエストこのイメージのすべての時間を作るべきではない:
空のキャッシュ応答で元の要求は、これらのヘッダを持っていますか?テストを実行すると、ブラウザは1分ごとに1つの新しいリクエストを作成するように見えます(ロードしようとする同じイメージのコピーの数に関係なく)。これは予期された動作ですか?イメージが変更されるたびにブラウザが毎回チェックするようにするヘッダーの組み合わせはありますか?あるいは、そのトリックを行うJavaScriptの魔法か?
あなたのリクエストには何を使用していますか?これは、特定のタイムアウト期間内に同じURIの要求を見た場合に、リクエストを行うために使用しているメソッドまたはライブラリに固有のものです。 – ZachB
@ZachB私はライブラリを使用していません。私はプレーンなJS、すなわち 'var img = new Image(); img.onload = function(){/ * ... * /}; img.src = "someimage.png"; ' – lakenen