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

时间:2011-12-09 09:44:39

标签: javascript asp.net caching internet-explorer-8 openlayers

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

  

/layouts/KmlDataGenerator.aspx?vaccination=2&cohort=2003%7c2010&sex=3&xaxis=Kommune&landsdel=100&show=Map&datatype=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调用的查询字符串中,但没有任何帮助。

任何想法都将受到赞赏!

2 个答案:

答案 0 :(得分:0)

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

public override void ProcessRequest(HttpContext context) 
{
    context.Response.Cache.SetNoStore();

    // Execute code 

    context.Response.Write(<content>);
}

答案 1 :(得分:0)

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