如何防止IE8缓存OpenLayers地图数据(ASP.Net)
How to prevent IE8 from caching OpenLayers map data (ASP.Net)
我正在使用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中是必需的,而不是在其他浏览器中。但无论如何,它解决了问题。
相关文章:
- 借助asp.net验证或java脚本对多个文本进行验证
- 将Javascript数组发送到控制器ASP.NET MVC
- ASP.NET通过单击JavaScript按钮触发c#事件
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- 从javascript调用asp.net codebehind函数
- 使用javascript的Asp.net内容占位符
- 获取ASP.NET Ajax Timer状态
- ASP.NET网络摄像头显示
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 如何将乳胶配方奶粉图像保存到Asp.net中的文件夹中
- asp.net,包括iss上的javascript slow
- 选择不在GridView-ASP.NET中激发
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 使用ASP.NET将谷歌地图添加到项目中,并从数据库中检索位置
- 有什么“;错误的”;将javascript放在asp.net表单上,而不是放在单独的文件中
- 将Javascript日期转换为ASP.NET日期格式
- C#asp.net mvc Set CheckBoxFor已检查的具有Model Value的属性
- 在asp.net中确认是或否消息
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- asp.net中的验证工具