AIR, похоже, сохраняет свой собственный кэш DNS, когда приложение работает, и игнорирует любые изменения в кеше ОС DNS (т.е. ipconfig / flushdns).
В частности, я создаю несколько объектов URLStream и URLRequest в течение длительного периода времени в приложении AIR. Как только первый из них подключается, IP-адрес хоста кэшируется на весь срок службы приложения. И свойство URLRequest.useCache, понятно, не влияет на кеширование DNS.
Кто-нибудь знает, возможно ли это или как принудительно переопределить имя хоста в приложении AIR (или Flash)?
Примечание. К сожалению, разрешение IP-адреса с помощью веб-службы и перезапись URL-адреса не является альтернативой. Вариант использования - загрузка файлов из Amazon S3 с использованием подписанных URL-адресов, которые становятся недействительными в случае их изменения.
Обновление: результаты теста выше были собраны на WinXP до AIR 1.5.2. Последующие тесты с использованием 1.5.2 показывают, что сериализованные запросы с помощью URLStream.load () разрешаются чаще, но при этом игнорируются значения TTL. Я до сих пор не выяснил, какие условия необходимы для повторного разрешения, но отметил пару случаев, которые мешают этому. Например, если другой асинхронный URLStream активен для того же хоста, тогда запросы используют кэшированный IP-адрес и не разрешаются. И простого закрытия и разыменования всех потоков на хосте недостаточно, чтобы гарантировать, что то же имя хоста будет повторно разрешено в следующем запросе.