【发布时间】:2009-08-09 17:06:40
【问题描述】:
AIR 似乎在应用程序运行时保留自己的 DNS 缓存,并忽略对操作系统 DNS 缓存的任何更改(即 ipconfig /flushdns)。
更具体地说,我在 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 地址并且不会被解析。并且简单地关闭和取消对主机的所有流的引用并不足以确保在下一个请求中重新解析相同的主机名。
【问题讨论】:
标签: javascript apache-flex flash air