2009-07-01 19 views
0

Ich schreibe eine Flex-Anwendung, die eine XML-Datei auf dem Server abfragt, um alle paar Sekunden nach aktualisierten Daten zu suchen, und ich habe Probleme, die Daten zwischenzuspeichern und nicht zu antworten um es zu aktualisieren.Verhindern, dass Flex eine externe Ressource zwischenspeichert

Ich habe versucht, Header, um das IIS-Kontrollfeld mit dem folgenden verwenden, ohne Erfolg:

CacheControl: no-cache 
Pragma: no-cache 

ich auch einen zufälligen HTTP-GET-Parameter an das Ende der Anforderungs-URL versucht habe, das Hinzufügen , aber es scheint so, als ob es von der HttpService-Klasse abgezogen wird, bevor die Anfrage gestellt wird. Hier ist der Code, es zu implementieren:

http.url = "test.xml?time=" + new Date().getMilliseconds(); 

Und hier ist das Debug-Protokoll, das macht ich denke, es ist fehlgeschlagen:

(mx.messaging.messages::HTTPRequestMessage)#0 
    body = (Object)#1 
    clientId = (null) 
    contentType = "application/x-www-form-urlencoded" 
    destination = "DefaultHTTP" 
    headers = (Object)#2 
    httpHeaders = (Object)#3 
    messageId = "AAB04A17-8CB3-4175-7976-36C347B558BE" 
    method = "GET" 
    recordHeaders = false 
    timestamp = 0 
    timeToLive = 0 
    url = "test.xml" 

Hat jemand mit diesem Problem umgegangen?

Antwort

2

Der HTTP-Header der Cache-Steuerung ist "Cache-Control" ... beachten Sie den Bindestrich! Es sollte den Trick machen. Wenn Sie den Bindestrich weglassen, wird es wahrscheinlich nicht funktionieren.

0

Ich benutzte die getTime(), um das Datum in eine numerische Zeichenfolge, die den Trick getan hat. Ich änderte auch GET zu POST. Es gab einige Probleme mit unterschiedlichen Dateierweiterungen, die unterschiedlich zwischengespeichert wurden. Zum Beispiel könnte eine Standard-dynamische Erweiterung wie .php oder .jsp nicht vom Browser zwischengespeichert werden und

private var myDate:Date = new Date(); 
[Bindable] 
private var fileURLString:String = "http://www.mysite.com/data.txt?" + myDate.getTime(); 

Hoffentlich hilft dies jemand.

Ich warf auch eine Tonne der Header-Parameter, aber sie haben nie den Trick voll gemacht. Beispiele:

// HTTPService called service 
service.headers["Pragma"] = "no-cache"; // no caching of the file 
service.headers["Cache-Control"] = "no-cache"; 
Verwandte Themen