IEの「名前を付けて画像を保存」がうまく動かない

昨日作った数式画像生成サイト(http://exp.frozenlib.net/)に「画像かHTMLをコピーして使ってね」と書いたにもかかわらず、IEで「名前を付けて画像を保存」を行うと画像が壊れてしまっていた。

調べてみたところ、

  • HTTPレスポンスヘッダにVary:*が含まれている
  • 透過PNG画像を保存しようとした

の2つの条件が重なると起こるようだ。

原因はこうだ。

  1. ASP.NETのOutputCacheを使用
  2. すると、キャッシュを使用したページのHTTPレスポンスヘッダにVary:*が含まれるようになる
  3. すると、IE7やIE6では画像の種類とサイズが「利用不能」と表示される
  4. さらに、そのような画像に対して「名前を付けて画像を保存」を行うと、bitmap形式でしか保存できなくなっている
  5. ここで、もし、保存する画像が透過PNGだったとすると、透明度情報が失われてしまう。

とりあえず、不透明な画像を出力することで解決したが、できれば、OutputCacheを使いつつ、Vary:*が出力されないようにしたい。
が・・・なかなか上手くいかない。