Javascript 有没有办法刷新DNS缓存或强制主机名在Adobe AIR/Flash中重新解析?

Javascript 有没有办法刷新DNS缓存或强制主机名在Adobe AIR/Flash中重新解析?,javascript,apache-flex,flash,air,Javascript,Apache Flex,Flash,Air,AIR似乎在应用程序运行时保留自己的DNS缓存,并忽略对OS DNS缓存的任何更改(即ipconfig/flushdns) 更具体地说,我将在AIR应用程序中长时间创建多个URLStream和URLRequest对象。第一个连接后,主机的IP地址将在应用程序的生命周期内缓存。可以理解,URLRequest.useCache属性对DNS缓存没有影响 有人知道是否有可能或者如何强制主机名在AIR(或Flash)应用程序中重新解析吗 注意:不幸的是,通过web服务解析IP并重写URL并不是一种解决方法

AIR似乎在应用程序运行时保留自己的DNS缓存,并忽略对OS DNS缓存的任何更改(即ipconfig/flushdns)

更具体地说,我将在AIR应用程序中长时间创建多个URLStream和URLRequest对象。第一个连接后,主机的IP地址将在应用程序的生命周期内缓存。可以理解,URLRequest.useCache属性对DNS缓存没有影响

有人知道是否有可能或者如何强制主机名在AIR(或Flash)应用程序中重新解析吗

注意:不幸的是,通过web服务解析IP并重写URL并不是一种解决方法。用例是使用签名URL从AmazonS3下载文件,如果修改,这些URL将失效


更新:以上测试结果是在AIR 1.5.2之前的WinXP上收集的。使用1.5.2的后续测试显示,使用URLStream.load()的序列化请求会更频繁地重新解析,但仍然忽略TTL值。我还没有弄清楚触发重新解析的必要条件,但注意到有几个案例阻止了它。例如,如果同一主机的另一个异步URLStream处于活动状态,则请求将使用缓存的IP地址,并且不会解析。仅关闭并取消对主机的所有流的引用不足以确保在下一个请求中重新解析相同的主机名。

这不是一个确定的答案,但您似乎可以通过向其他主机发出一个或多个请求来从AIR的DNS缓存中删除条目,从而覆盖缓存中的目标主机名。然后将解析对目标主机名的下一个请求


但我仍然不清楚DNS缓存中可以保存多少条目。因此,其他请求的数量可能会有所不同,这使得这项技术受到质疑。

Mac OSX上的AIR 1.5似乎不像WinXP上的AIR那样存在缓存问题。