偶然的通行人 さんが書きました:
そもそも、ブラウザでは画像が正常に表示できていたということは、そのデータをローカルのメモリなりディスクなりに問題なく取り込めているということですよね? その画像をデスクトップに保存する場合、メモリキャッシュやディスクキャッシュにあるデータを利用するのでしょうか。それとも、もう一度サーバーにリクエストを出してデータを持ってくるんでしょうか。
ちょっと調べてみました。
画像データを Drag & Drop する際、
- キャッシュ内の画像データが賞味期限内の場合
- キャッシュ内の画像データが賞味期限後(Expired)だけど
If-Modified-Since 指定付きの HTTP リクエストに対し
304 Not Modified な HTTP レスポンスを受け取った場合
→ キャッシュ内のデータをそのまま利用 - キャッシュが無効化されている場合
→ 改めてサーバーから画像データをダウンロード
となるようです。
偶然的通行人 さんが書きました:
Firefox の保存に関する操作で、「右クリック -> 名前を付けて画像を保存」と「画像の D & D」では、保存のプロセスが異なったりするのでしょうか?
実際に問題の再現に差がでていることから、多分その通りなのでしょう。
なお、 Content-Encoding: gzip された画像データのキャッシュ情報を
about:cache で見たところ、 Data Size が (gzip エンコードされた)
Content-Length の値と一致しました。
つまり、キャッシュ内のデータは gzip エンコードされた状態のままと
思われます。
画像データをデスクトップに Drag & Drop した時、
キャッシュ内のデータがデスクトップに保存されるのか否かで
問題の再現に差があるか気になるところです。
これまでに判明した問題が再現する条件をまとめると、
- Firefox 3.5.1
- Mac OSX 10.5.7 または Windows Vista Home Premium SP1
(Windows XP Professional SP3 や Windows 2000 Professional SP4 では再現しない) - 画像をデスクトップに Drag & Drop
(右クリック→「名前を付けて画像を保存」では再現しない) - サーバーから受け取った画像データは gzip または deflate でエンコードされている
(エンコードされていない素のままのデータを受け取っている場合は再現しない) - キャッシュクリアでも再現する
(画像表示→キャッシュクリア→D&D の手順で再現するのならば、キャッシュの有効・無効は恐らく無関係) - セーフモード、新規プロファイルでも再現する
(アドオンの有無は恐らく無関係)
他にも何か条件はあるでしょうか……?