如何防止IE8缓存OpenLayers地图数据(ASP.Net)

How to prevent IE8 from caching OpenLayers map data (ASP.Net)

本文关键字:ASP Net 数据 地图 何防止 IE8 缓存 OpenLayers      更新时间:2023-09-26

我正在使用c#/ASP.Net中动态生成的KML文件开发基于OpenLayers的地图视图。在文件后面的代码中,我定义了KML文件调用的查询字符串参数,可能如下所示:

/布局/KmlDataGenerator.aspx ?接种= 2,队列= 2003% 7 c2010&性= 3,xaxis = Kommune& landsdel = 100,显示= Map&数据类型= Vaccination& extendedfilters = False

这个url字符串被插入到OpenLayers js代码中的KmlFileName文本中:

vector = new OpenLayers.Layer.Vector("KML", {
        projection: wgs84,
        strategies: [new OpenLayers.Strategy.Fixed()],
        isBaseLayer: false,
        protocol: new OpenLayers.Protocol.HTTP({
            url: '<asp:Literal ID="KmlFileName" runat="server"/>',
            format: new OpenLayers.Format.KML({
                extractStyles: true,
                extractAttributes: true
            })
        })
    });

问题是IE8和更早的版本似乎缓存了一些东西——我不知道到底是什么,但地图永远不会显示,除非我按CTRL+F5或手动清除IE8中的缓存。此问题在IE9、Firefox或Chrome中不存在…

我试过添加元标签来防止浏览器缓存页面,我也试过在每个javascript调用的查询字符串中添加一个随机生成的字符串,但没有任何帮助。

任何想法都将受到赞赏!

我在.ashx文件中使用了相同的目的:

public override void ProcessRequest(HttpContext context) 
{
    context.Response.Cache.SetNoStore();
    // Execute code 
    context.Response.Write(<content>);
}

我在同事的帮助下解决了这个问题。结果是,处理地图投影的几行javascript代码必须移动到document.ready()函数中。我想知道为什么这只在IE8中是必需的,而不是在其他浏览器中。但无论如何,它解决了问题。