-1

我有一个带有Google Maps API V3ASP.Net的应用程序,它使用OverlayView在地图上设置自定义图标。

该图标的图像onAdd通过使用 JavaScript 设置背景 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 回答