我正在编写一个flex应用程序,它会轮询服务器上的xml文件,以便每隔几秒检查一次更新数据,并且我无法阻止它缓存数据并且无法响应更新数据。
我尝试使用IIS控制面板设置标头以使用以下内容,但没有任何运气:
CacheControl: no-cache
Pragma: no-cache
我还尝试在请求URL的末尾添加一个随机HTTP GET参数,但这似乎在请求发出之前被HttpService类剥离了。这是实现它的代码:
http.url = "test.xml?time=" + new Date().getMilliseconds();
这是调试日志,让我觉得它失败了:
(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"
有没有人处理过这个问题?
答案 0 :(得分:2)
缓存控制HTTP标头是“Cache-Control”...注意连字符!它应该做的伎俩。如果省略连字符,则不太可能有效。
答案 1 :(得分:0)
我使用getTime()将日期变成了一个完成技巧的数字字符串。我也把GET更改为POST。存在一些问题,不同的文件扩展名被缓存不同。例如,浏览器和
可能不会缓存标准的动态扩展名,如.php或.jspprivate var myDate:Date = new Date();
[Bindable]
private var fileURLString:String = "http://www.mysite.com/data.txt?" + myDate.getTime();
希望这有助于某人。
我还抛出了大量的标题参数,但它们从未完全成功。例子:
// HTTPService called service
service.headers["Pragma"] = "no-cache"; // no caching of the file
service.headers["Cache-Control"] = "no-cache";