2009-08-09 48 views
3

当应用程序正在运行时,AIR似乎保留其自己的DNS缓存,并忽略对操作系统DNS缓存(即ipconfig/flushdns)的任何更改。是否有办法刷新DNS缓存或强制主机名在Adobe AIR/Flash中重新解析?

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

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

注意:不幸的是,通过Web服务解析IP并重写URL不是解决方法。用例是使用签名的URL从Amazon S3下载文件,如果修改则签名的URL无效。

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

回答

1

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

虽然我仍然不清楚在DNS缓存中可以保存多少条目。所以其他请求的数量可能会有所不同,这使得这种技术可疑。

+0

Mac OSX上的AIR 1.5似乎不会像WinXP上的AIR那样存在缓存问题。 – 2009-09-11 01:58:15