2011-12-09 28 views
1

我正在使用C#/ ASP.Net中使用動態生成的KML文件的基於OpenLayers的地圖視圖。在代碼隱藏文件,我定義的查詢字符串參數的KML文件調用,這可能是這樣的:如何防止IE8緩存OpenLayers地圖數據(ASP.Net)

/layouts/KmlDataGenerator.aspx?vaccination=2 &隊列= 2003%7c2010 &性= 3個& x軸= Kommune & landsdel = 100 &顯示地圖= &的數據類型=疫苗接種& extendedfilters =假

此URL字符串被插入KmlFileName在以下的OpenLayers JS-代碼字面:

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調用,但沒有任何幫助。

任何想法將不勝感激!

回答

0

我和一位同事的幫助下解決了這個問題。事實證明,處理地圖投影的幾行javascript代碼必須移動到document.ready()函數中。我想知道爲什麼這隻在IE8中是必要的,而不是在其他瀏覽器中。但無論如何,它解決了這個問題。

+0

有趣的是,你移動了哪些文件? –

0

我有一個ashx的文件的同一目的而使用這樣的:

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

    // Execute code 

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