【问题标题】:Is there a way to flush the DNS cache or force a host name to re-resolve in Adobe AIR/Flash?有没有办法在 Adob​​e AIR/Flash 中刷新 DNS 缓存或强制主机名重新解析?
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • Mac OSX 上的 AIR 1.5 似乎没有像 WinXP 上的 AIR 那样受到缓存问题的影响。
    猜你喜欢
    • 2016-01-11
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多