1

C#/ASP.Net에서 동적으로 생성 된 KML 파일을 사용하여 OpenLayers 기반 맵보기에서 작업하고 있습니다.IE8에서 캐싱하지 못하도록하는 방법 OpenLayers 맵 데이터 (ASP.Net)

/layouts/KmlDataGenerator.aspx?vaccination=2 & 코호트 = 2,003% 7c2010 & 섹스 = 3 & X- 축 : 파일 뒤에 코드에서 I는 다음과 같이 수있는 KML 파일 호출에 쿼리 문자열 매개 변수를 정의 = KOMMUNE & landsdel = 100 & 쇼 =지도 & 데이터 타입 = 거짓 예방 접종 & extendedfilters =

이 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에 문제가 없습니다.

메타 태그를 추가하여 페이지의 브라우저 캐싱을 방지하려고했지만 임의로 생성 된 문자열을 다음과 같은 쿼리 문자열에 추가하려고했습니다. 각 자바 스크립트 호출,하지만 아무것도 도움이됩니다.

어떤 아이디어라도 감사하겠습니다!

답변

0

내가 동료의 도움으로 그것을 해결. 지도 투영을 처리하는 몇 줄의 자바 스크립트 코드가 document.ready() 함수로 이동되어야한다는 것이 밝혀졌습니다. 왜 IE8에서만 필요하며 다른 브라우저에서는 필요하지 않은지 궁금합니다. 그러나 어쨌든, 그것은 문제를 해결했습니다.

+0

흥미로운 점은 어떤 파일을 이동 했습니까? –

0

나는 .ASHX 파일에서 같은 목적으로이를 사용하고 있습니다 :

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

    // Execute code 

    context.Response.Write(<content>); 
} 
관련 문제