防止flex缓存外部资源

时间:2009-07-01 14:42:43

标签: flex http iis caching

我正在编写一个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"

有没有人处理过这个问题?

2 个答案:

答案 0 :(得分:2)

缓存控制HTTP标头是“Cache-Control”...注意连字符!它应该做的伎俩。如果省略连字符,则不太可能有效。

答案 1 :(得分:0)

我使用getTime()将日期变成了一个完成技巧的数字字符串。我也把GET更改为POST。存在一些问题,不同的文件扩展名被缓存不同。例如,浏览器和

可能不会缓存标准的动态扩展名,如.php或.jsp
private 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";