2010-03-17 2 views
0

제 질문은 XML 로딩에 대한 것입니다. xml 캐싱을 피할 필요가있다.로컬 테스트에서 캐시 된 XML

웹 서버에서 기술은 임의의 매개 변수를 추가하여 XML 파일을 다시로드합니다. 그러나 지역 테스트에 (플래시 CS4 IDE, CTRL + Enter를에), 다음 줄은 가능하지 않습니다 :

var my_date : Date; 
path = "toto.xml?time="+my_date.getSeconds()+my_date.getMilliseconds(); 

이 문제를 우회하기 위해 어떤 트릭이 있습니까? "delete"메서드에 대한 다른 포럼을 읽었습니다. xml 개체를 삭제 한 다음 새 개체를 다시 만듭니다.

제 경우에는 다음을 넣습니다. myXML = null; myXML = new XML (loadedData); 하지만 전혀 작동하지 않습니다.

불행히도 cacheResponse과 함께 흥미로운 것을 발견했지만 Air 1.0의 경우.

var loader  : URLLoader = new URLLoader(); 
var urlRequest : URLRequest = new URLRequest(xmlUrl); 
var header  : URLRequestHeader = new URLRequestHeader ("pragma", "no-cache"); 
urlRequest.requestHeaders.push(header); 

을하지만 그것은 작동하지 않습니다 는 AS3에서 나는 발견했다.

아무도 좋은 해결책이 있다면 나는 그 문제에 많은 시간을 보냈다 ... 고맙습니다.

답변

1

는 최근에 나는 나를 완전히 캐싱을 사용하지 않도록하자 디버그 프록시를 사용하기 시작했지만, 내가 한 전에이 문제를 다루는이 작은 액션 스크립트 코드 조각을 사용하는 것이 :

import flash.system.Capabilities; 

var url:String = "foo.xml"; 
if (Capabilities.playerType == "StandAlone" || Capabilities.playerType == "External") { 
    // running locally, cache busting not required 
} else { 
    // running in browser 
    url += "?rnd=" + Math.random(); 
} 
+0

답변으로 선택해야합니다. 그것은 확실히 나를 도왔다. – Bojan

0

주요 트롤,하지만을 :에서 Pragma 캐시를 제어하는 ​​최선의 방법은 아닙니다. http://www.mnot.net/cache_docs/#PRAGMA

그리고 결국, URL 쿼리 문자열 끝에 임의의 숫자를 추가하는 것은 캐싱을 통해 모든 monkeybusiness를 지나치는 확실한 방법입니다.