-1

OverlayViewを使用して地図上にカスタム アイコンを設定するGoogle Maps API V3およびASP.Netを使用したアプリケーションがあります。

そのアイコンの画像は、onAddJavaScript で背景の CSS プロパティを設定することにより、イベントで設定されます。この画像は.pngです。

このアイコンの位置は更新($.ajax)によって頻繁に変更され、その時点でサーバーから画像が再度ダウンロードされます。これにより、少しまばたきが発生します。別のアイコンがダウンロードされていると、アイコン イメージが消えます。点滅せずに位置を変更する必要があります。

問題は、「ブラウザが画像をキャッシュしないのはなぜですか?」ということです。. Chrome の開発者ツールは、これらの画像が の MIME タイプで提供されていることを示しています"application/octet-stream"。コンソールに次の警告が表示されます。

リソースはイメージとして解釈されますが、MIME タイプ application/octet-stream で転送されます: " http://localhost:81/Common/Images/Synoptic/bus_b.png "

このリンクにはすでにこれに関する質問がありますが、役に立ちませんでした。私の問題はより具体的だと思います。

4

1 に答える 1

1

さて、私はこれに対する解決策を見つけました。.ashxファイルヘッダーを使用して、そこでキャッシュを制御しました。結果は次のとおりです。

path = context.Request.MapPath(path + context.Request.QueryString["name"]);

if (File.Exists(path))
{
    imageBytes = File.ReadAllBytes(path);

    DateTime dt = DateTime.Now.AddYears(1);

    context.Response.Cache.SetMaxAge(new TimeSpan(dt.ToFileTime()));
    context.Response.Cache.SetCacheability(HttpCacheability.Public);

    context.Response.ContentType = "image/png";
    context.Response.BinaryWrite(imageBytes);  
}
else 
{
    throw new SystemException("Image doesn't exists. '" + path + "'");
}

したがって、使用は次のとおりです。

frmImageCaching.ashx?name=bus_b.png
于 2013-02-18T14:27:00.283 に答える