我的应用程序使用 Google Maps API V3 和 ASP.Net ,使用OverlayView在地图上设置自定义图标。
通过使用JavaScript设置背景CSS属性,在onAdd
事件上设置该图标的图像。此图片为 .png 。
此图标位置经常被更新($。ajax)更改,并且在此时,图像将再次从服务器下载。这会导致一点点闪烁 - 当另一个下载时,图标图像会消失。它应该改变它的位置而不会眨眼。
问题是“为什么浏览器不会缓存图像?”。 Chrome的开发人员工具显示这些图片的MIME类型为"application/octet-stream"
。在控制台上我看到了这个警告:
资源解释为图像但使用MIME类型application / octet-stream传输:“http://localhost:81/Common/Images/Synoptic/bus_b.png”
this link已经有一个关于此的问题,但这对我没有帮助。我认为我的问题更具体。
答案 0 :(得分: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