Chrome假设octet-stream到.png图像

时间:2013-02-18 12:47:23

标签: javascript jquery asp.net google-maps mime-types

我的应用程序使用 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已经有一个关于此的问题,但这对我没有帮助。我认为我的问题更具体。

1 个答案:

答案 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